建立一个使用.Net 2.0 MemberShip功能的标准例程——配置篇

来源:互联网 发布:陈鸿一鸣 知乎 编辑:程序博客网 时间:2024/05/01 17:17
具体配置如下1 配置数据库运行    /WINDOWS/Microsoft.NET/Framework/v2.0.50727  下的Aspnet_regsql.exe随后 向导便在SQL Server中建立了对应的表。这些表就是.Net 2.0 默认Provider对应的表,如果你在建立一个新项目 就没必要在自己写烦人的登陆了,这些表和它们所支持默认Provider的已经涵盖了很多高级功能,包括cookie的支持、跨网站跨进程的登陆、找回密码、邮箱认证等功能,当然我们也可以扩展它们。相对的  我们还需要在web.config 建立这个数据连接字符串(<configuration >段中)
    <connectionStrings>        <add name="MemberShip_Connection" connectionString="Data Source=.;Initial Catalog=MemberShip_Demo;Persist Security Info=True;User ID=sa;Password=abcdefg" providerName="System.Data.SqlClient"/>    </connectionStrings>
这样数据库的配置就已经完成了,我爱厨房怎么说来着?阴干待用。2  配置验证类型一个asp.net缺省的身份验证是windows nt 登陆。如果我们要自己来处理验证信息就要在 <configuration >下面的<system.web> 段加入节点通知系统。
        <authentication mode="Forms">            <forms loginUrl="~/Membership/authing/Login.aspx" timeout="30000">            </forms>        </authentication>
mode=forms 表示我不要用默认的windows NT 权限设置、而用我们配置的这种自定义的 面向网页界面的验证方式。loginUrl  表示如果访问某页需要验证的话 跳转到哪一个(一般是有Login控件的)地址来进行登陆。登陆完毕,会直接跳回刚才的页面。3  配置各种ProviderProvider对于Membership的感觉有点像 DataAdapter对于Dataset的感觉,都是可选择的配件,你配置了不同的Provider 就有不同的用户数据库可以访问 目前Provider 默认提供两种官方Provider:  SQL Provider  & ADSI  Provider   前者通过SqlServer数据库保存  后者直接连结windows域的adsi服务例如
<membership defaultProvider="Main_SqlMemberShipProvider" userIsOnlineTimeWindow="20">            <providers>                <add connectionStringName="MemberShip_Connection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="true" passwordFormat="Hashed" applicationName="DEMO_Membership" name="Main_SqlMemberShipProvider" type="System.Web.Security.SqlMembershipProvider"/>                    </providers>        </membership>
这个例子表示  我要用MemberShip_Connection这个连接字符串连接数据库(我们阴干待用的部分)  用户不能找回密码但是可以重新设置密码,找回的时候需要密码提示问题,储存在数据库中的密码用sha1进行加密  等等细节问题。  对于公用的Membership数据库 区别名为  DEMO_Membership  .Type是重要的选项 这决定你使用哪一个符合接口的具体的类型来担任Provider 项  如果你使用自己的Provider  可以把DLL作为引用添加在bin目录后  在这里填写详细的命名空间信息  比如“"System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089” 之类的东西  这里不作赘述这时候 我们已经可以通过控件进行申请和登陆了   你所需要做的只是把控件拖到指定的页面上 然后test   也可以通过网站菜单下的管理工具进行修改有些选项可能进不去 但是用户的删除和修改都可以尝试使用了。  我们只需要进一步配置 更多的功能就向我们敞开大门了~~~同样我们配置Roles 和 Profile 的Provider
        <roleManager enabled="true" cacheRolesInCookie="true" cookieName=".ASPROLES" cookieRequireSSL="true" defaultProvider="SqlRoleProvider">            <providers>                <add connectionStringName="MemberShip_Connection" applicationName="DEMO_Membership" name="SqlRoleProvider" type="System.Web.Security.SqlRoleProvider"/>            </providers>        </roleManager>
<profile enabled="true" defaultProvider="SqlProfileProvider">            <providers>                <add name="SqlProfileProvider" type="System.Web.Profile.SqlProfileProvider" connectionStringName="MemberShip_Connection" applicationName="DEMO_Membership" description="SqlProfileProvider for SampleApplication"/>            </providers>            <properties>                    <add name="UserAge" type="System.String" defaultValue ="21"></add>        <add name="UserSex" type="System.String" defaultValue ="Male"></add>               </properties>        </profile>
经过编译以后  你已经可以轻松的在你的页面里面访问和设置你现在登陆的用户的各种信息:
   Protected Sub Button1_Click()Sub Button1_Click(ByVal sender As ObjectByVal e As System.EventArgs) Handles Button1.Click        Dim x As String = String.Empty        x = x & Membership.GetUser().UserName & ":"        x = x & Roles.GetRolesForUser(Membership.GetUser().UserName).Length & "个角色:"        x = x & "年龄" & Profile.UserAge        Button1.Text = x    End Sub
假如你没有登陆  可能会得到一个对象引用错误   但是你作为一个已知用户登陆的话   运行结果大概是这样而刚才提到的网站管理工具  已经基本可以正常工作了。配置篇的例子到此完成    至于每一个参数什么意义   MSDN上还是很全的。 如果查资料比较不方便  可以留言  我们一起讨论
原创粉丝点击