使用登录控件
下面的例子演示了在应用程序中如何使用登录控件。
创建和登录用户
在例子中我们会看到站点的主页,它包含了一个LoginStatus控件,该控件提示用户登录站点。这个页面上的LoginStatus控件检查用户当前是否通过了认证,并向用户显示一个登录链接。用户点击这个链接就可以看到默认的login.aspx页面,在web.config中已经把这个页面配置为窗体认证。Login控件显示在Login.aspx页面上(请注意,在默认的登录页面上登录控件的VisibleWhenLoggedIn属性会被忽略)。在例子中,登录控件设置了额外的属性,显示了"创建用户"链接,点击这个链接会访问另外一个页面,那个页面使用了CreateUserWizard控件。在默认情况下,CreateUserWizard控件包含两个步骤,在第一步中用户输入必要的信息,当他们点击"创建用户"按钮的时候,控件把这些信息传递给成员API。如果成员API不能建立该用户,在控件中会显示适当的错误信息;如果用户创建成功,控件就载入向导的第二步。在例子中,ContinueDestinationPageUrl属性被设置为在用户创建成功之后返回主页。在默认情况下,当用户被成功创建之后,CreateUserWizard会认证并登录用户。当用户返回到主页的时候,他们会注意到LoginStatus被删除了,他们已经通过了认证,并显示了一个登出链接。点击登录链接会引起用户认证票据(ticket)被清除,并显示登录链接。这时用户可以点击登录链接,由于他们已经创建了用户帐号,所以可以在login.aspx上输入用户名和密码来登录网站。你可能注意到Login控件显示了一个"记住帐号(remember me)"检查框。选中这个框并成功登录之后,会向用户的计算机上写入一个cookie,该cookie默认的存续期是50年。你可以通过把Login控件的DisplayRememberMe和RememberMeSet属性设置为false来禁用这个选项。查看示例的代码,你可以发现这项事务并没有任何代码,只设置了少许的几个属性。这些控件的样式属性都是站点应用的样式表设置的。
Login.aspx
<%@ Page Language="VB" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderId="MainBody" runat="server">
<asp:login ID="Login1" runat="server" createuserurl="CreateUser.aspx"
createusertext="Create a New Account" />
</asp:Content>
CreateUser.aspx
<%@ Page Language="VB" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderId="MainBody" runat="server">
<asp:CreateUserWizard ID="CreateUserWizard1" runat="server"
continuedestinationpageurl="Home.aspx"/><br />
<a href="Home.aspx">Return to Default Home Page</a><br />
<a href="HomeLoginView.aspx">Return to LoginView Home Page</a><br />
<a href="HomeChangePassword.aspx">Return to ChangePassword Home Page</a><br />
</asp:Content>
|
向认证用户显示不同的内容
下面的例子演示了使用LoginView控件为认证过的用户和匿名用户显示不同的内容。尽管例子中没有显示什么,但是LoginView控件支持基于用户角色来显示不同内容。LoginView控件中的AnonymousTemplate模板包含了一个登录控件,LoggedInTemplate模板包含了LoginName控件。LoginName控件利用格式化字符串属性来显示欢迎和用户姓名。请使用上一个例子中创建的帐号或重新创建一个帐号来登录站点,并点击页面上方的登出链接。
<%@ Page Language="VB" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderId="MainBody" runat="server">
<asp:loginview ID="LoginView1" runat="server">
<loggedintemplate>
<h1>
<asp:loginname id="LoginName1" runat="server" formatstring="Welcome {0}" />
</h1>
</loggedintemplate>
<anonymoustemplate>
<h1>Welcome to Login Controls</h1>
<asp:login ID="Login1" runat="server"
createuserurl="CreateUser.aspx" createusertext="Create a New Account" />
</anonymoustemplate>
</asp:LoginView>
</asp:Content>
|
修改密码
在默认情况下,ChangePassword控件要求用户通过了站点的认证才能更改他们的密码。但是,在下面的例子中,我们把DisplayUserName属性设置为真,其结果是用户在改变自己的密码之前,可以由ChangePassword控件进行认证,或者通过站点认证的用户输入不同的帐号来改变密码。例子还链接到了创建用户页面,使你能够创建有效的用户并测试示例。
<%@ Page Language="VB" MasterPageFile="~/Site.master"%>
<asp:Content ID="Content1" ContentPlaceHolderId="MainBody" runat="server">
<asp:ChangePassword ID="ChangePassword1" runat="server"
createuserurl="CreateUser.aspx" createusertext="Create a New Account"
canceldestinationpageurl="HomeChangePassword.aspx" displayusername="true"
continuedestinationpageurl="HomeChangePassword.aspx"/>
</asp:Content>
|
使用成员和角色管理器API
成员
成员特性是围绕两个核心类构建的:Membership和MembershipUser。Membership类提供创建用户(MembershipUser类处理)的方法,以及通用的管理用户的方法。用Membership类建立的用户是通过ASP.NET应用程序认证的身份。
Membership类执行的通用事务包括:
◆创建新的MembershipUser
◆当用户试图登录的时候验证用户名-密码组合。接下来你可以使用窗体认证来生成一个cookie,表明用户登录了站点
◆ 检索MembershipUser实例
◆更新MembershipUser实例
◆根据不同的条件搜索用户
◆获取当前在线的通过认证的用户
◆在不需要用户的时候从系统中删除它
一旦你获取了MembershipUser实例,就可以直接使用MembershipUser类执行下面的事务:
◆访问应用程序中的MembershipUser类的属性
◆检索用户的密码(只有把成员特性配置为允许密码检索才可以使用)
◆改变或重置用户的密码
◆改变用户的密码提问和答案(如果成员特性被配置为在检索或更新密码之前,提示用户密码问题和答案)
◆解锁那些因为密码错误或密码答案错误而被锁定的用户 |