首先我们建一个web工程,在Default.aspx页上加入一个LoginView控件,这是一个容器控件,它可以表示用户是否登录,允许用户跳转到另一页.在控件的灵巧标签(Smart Tasks)上可以改变显示方式(Views)LoggedInTemplate(已登录)和anonymousTemplate(未登录).
现在在工程中再新建一个Web Form,取名为Login.aspx(asp.net2.0默认登录页为Login.aspx,如果想更改可以在machine.config.comments找).如果你想用不同的名字,可以在Web.config文件中加入
<system.web>
<authentication mode="Forms">
<forms name=".ASPXAUTH"
loginUrl="Authenticate.aspx"
protection="Validation" timeout="999999" />
</authentication>
...
Authenticate.aspx为你想改的名字.
向Login.aspx中加入一个Login控件,可以在控件的灵巧标签上的Auto Format选择样式.
<system.web>
<authentication mode="Forms"/>
...
这样你就只需向Web站点增加用户,而不用向Windows增加用户了.
添加用户
向default.aspx加入一个CreateUserWizard控件,现在你可以运行程序,填写信息点击Create User,成功后可以看到"Your account has been successfully created."
如果你储存的密码是纯文本而不hash值,密码恢复是可用.可是machine.config文件默认密码储存形式是hash的,
我们将其改为以纯文本方式储存密码,
...
<system.web>
<membership
defaultProvider="SqlProvider"
userIsOnlineTimeWindow="15">
<providers>
<clear />
<add
name="SqlProvider"
type="System.Web.Security.SqlMembershipProvider"
connectionStringName="LocalSqlServer"
applicationName="SecurityControls"
enablePasswordRetrieval="true"
enablePasswordReset="true"
requiresQuestionAndAnswer="true"
requiresUniqueEmail="true"
passwordFormat="Clear" />
</providers>
</membership>
...
你清除了所有的Membership Providers,追加一个新的SqlMembershipProvider.注意:为了允许密码可恢复,你需要设置enablePasswordRetrieval为true和passwordFormat为Clear.如果你设置passwordFormat为Hashed,那么你必须将enablePasswordReset设置为false.
将PasswordRecovery控件拖入到Default.aspx,在属性窗体设置MailDefinition下的From和Subject.
在工程中新建一个名为"Members"文件夹,在其中新建一个名为"ChangePassword.aspx"Web Form,在Web.config中给Members目录加上一个访问限制.
...
</system.web>
<location path="Members">
<system.web>
<authorization>
<deny users="?" />
</authorization>
</system.web>
</location>
</configuration>
这样已登录的用户可以访问Members目录,而匿名用户则被限制.
将ChangePasswrod控件拖入ChangePasswrod.aspx中,选择ChangePassword.aspx运行测试,你会发现页面转到 login.aspx,因为你还没有登录,填写登录信息进入ChangePassword.aspx,试着更改你的密码.