您的位置:首页 > 其它

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

2006-12-13 14:16 531 查看
从.net 2.0开始 asp.net 就进入了一个倡导少写代码多配置的时期

“机器先进阿 我们只要把猪赶进去 对面就会从传送带里传出香肠来!”

下面就是启动机器并且赶猪的工作。

在赶猪以前,我们先来了解一下,Web.Security 的工作大概方式

<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 配置各种Provider
Provider对于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 也可以通过网站菜单下的管理工具进行修改

<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 Object, ByVal 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上还是很全的。 如果查资料比较不方便 可以留言 我们一起讨论

下一章我们将使用ODS绑定这些数据到GridView 和FormView 上进行管理。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: