简介:
1、ChangePassword:提供了一个可供用户更改其网站密码的用户界面
2、CreateUserWizard:提供用于创建新网站用户帐户的用户界面
3、Login:提供用于登录到网站的用户界面 (UI) 元素
4、LoginName:默认情况下,LoginName 控件显示 Page 类的 User 属性中包含的名称。如果   System.Web.UI.Page.User.Identity.Name 属性为空,则不呈现控件。
5、LoginStatus:检测用户的身份验证状态,并将链接的状态切换为网站的登录或注销
6、LoginView:依据给定用户的身份验证状态和角色成员资格为该用户显示相应的内容模板
7、PasswordRecovery:提供使用户在忘记密码时恢复或重新设置并在电子邮件中接收它的用户界面 (UI) 元素

一、建立数据库:
本例是以SQL SERVER 2005为例,SQL SERVER 2000的方法一致。
首先找到aspnet_regsql.exe。
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_regsql.exe
运行:aspnet_regsql.exe -S (local——http://www.cnblogs.com/linn) -U sa -P password -A all -d testDB

说明:
参数
说明
A all|m|r|p|c|w

添加对一项或多项 ASP.NET 应用程序服务的支持。可以同时或单独指定服务标识符。下列标识符用于 ASP.NET 应用程序服务。

all -- 所有的服务,包括由服务共享的通用表和存储过程。

m -- 成员资格

r -- 角色管理器

p -- 配置文件

c -- Web 部件个性化设置

w -- Web 事件

 

-S <server>

 

指定正在运行 SQL Server 并且将安装或者已安装数据库的计算机的名称。

 

-U <login ID>

 

要用来登录的 SQL Server 用户 ID。此选项还要求使用密码 (-P) 选项。如果要使用 Windows 凭据 (-E) 进行身份验证,则此选项不是必需的。

 

-P <password>

 

要用来登录的 SQL Server 密码。此选项还要求使用用户 ID (-U) 选项。如果要使用 Windows 凭据 (-E) 进行身份验证,则此选项不是必需的。

 

-d <database>

 

指定要创建或修改以便与应用程序服务一起使用的数据库的名称。如果未指定数据库,则使用默认数据库名称“aspnetdb”。




图1 使用aspnet_regsql.exe生成数据库

二、新建一个工程,如:ajaxenabledwebsite1
修改web.config,添加如下内容
<connectionStrings>
    <add name="SqlServices" connectionString="server=(local);User ID=sa;Password=password;database=testDB;Connection Reset=FALSE" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <system.web>
    <membership defaultProvider="SqlProvider" userIsOnlineTimeWindow="20">
      <providers>
        <add connectionStringName="SqlServices" enablePasswordRetrieval="false"
          enablePasswordReset="true" requiresQuestionAndAnswer="true"
          passwordFormat="Hashed" name="SqlProvider" type="System.Web.Security.SqlMembershipProvider" />
      </providers>
    </membership>
    <profile>
      <providers>
        <remove name="AspNetSqlProvider"/>
        <add name="SqlProvider" connectionStringName="SqlServices" applicationName="/" type="System.Web.Profile.SqlProfileProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </profile>
    <roleManager enabled="true" defaultProvider="SqlProvider">
      <providers>
        <add connectionStringName="SqlServices" applicationName="/" name="SqlProvider"
          type="System.Web.Security.SqlRoleProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
      </providers>
    </roleManager>


三、在解决方案管理器中进行基本设置

图2 ASP.NET配置



图3 设定数据provider


图4 设定使用自定义的数据provider


图5 回到主页,设定其它信息


图7 使用设置向导


图9 选择访问方法,效果同在WEB.CONFIG中设置<authentication mode="Forms" />


图10 选择数据存储区,我们已经先设好了



图11 启用角色


图12 创建角色


图13 添加新用户


图14 添加访问规则
我给admin文件夹添加了两个访问规则,禁止匿名访问,只允许GM_ADMINISTRATOR角色组的访问。效果等同于直接在admin文件夹下添加一个web.config文件,内容如下:
<?xml version="1.0" encoding="utf-8"?>
<configuration xmlns="http://schemas.microsoft.com/.NetConfiguration/v2.0">
    <system.web>
        <authorization>
            <deny users="?" />
            <allow roles="GM_ADMINISTRATOR" />
        </authorization>
    </system.web>
</configuration>



三、使用Login控件
建立一个登录页面login.aspx(必须在程序首层建立),拖一个Login控件。
不用写任何代码,直接运行,输入你刚才建立的用户名和密码,如果出现错误,会出现图15,没有出现错误的话说明前面设置完全正确。可以进行下一步,否则请重复步骤二

图15 登录错误

四、使用LoginView/LoginStatus/LoginName控件
LoginView 控件默认有两个模板。
AnonymousTemplate:匿名模板,用于显示匿名用户的信息
LoggedInTemplate:登录用户模板,用于显示已登录用户的欢迎信息
另外,我们在本网站中启用了角色,所以可以使用
RoleGroups来对不同的角色显示不同的东西
 1 <div class="HeadMenu" align="right"><asp:LoginStatus ID="LoginStatus1" runat="server" />
 2                     <asp:LoginName ID="LoginName1" runat="server" />
 3                     <asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl="~/forgetPWD.aspx">忘记密码</asp:HyperLink>
 4             </div>  
 5 <div>
 6         <asp:LoginView ID="LoginView1" runat="server">
 7             <AnonymousTemplate>
 8                 您目前尚未登录。
 9             </AnonymousTemplate>
10             <LoggedInTemplate>
11                 当前您已登录为:<asp:LoginName ID="LoginName1" runat="server"></asp:LoginName>
12             </LoggedInTemplate>
13             <RoleGroups>
14                 <asp:RoleGroup Roles="GM_ADMINISTRATOR">
15                     <ContentTemplate>
16                         <tr>
17                             <td class="OtherTabs">
18                                 <asp:HyperLink ID="memberHome" runat="server" NavigateUrl="~/default.aspx">Home</asp:HyperLink>
19                                 &nbsp;|&nbsp;</td>
20                             <td class="OtherTabs">
21                                 <asp:HyperLink ID="memberAbout" runat="server" NavigateUrl="~/forgetpwd.aspx">Forget</asp:HyperLink>
22                                 &nbsp;|&nbsp;</td>
23                             <td class="OtherTabs">
24                                 注意Roles里面组名的大小写,来自http://www.cnblogs.com/linn/的原创
25                             </td>
26                         </tr>
27                     </ContentTemplate>
28                 </asp:RoleGroup>
29             </RoleGroups>
30         </asp:LoginView>
31     </div>

五、使用PasswordRecovery控件
新建forgetpassword.aspx,页面代码为:
1     <asp:PasswordRecovery ID="PasswordRecovery1" runat="server">
2         <maildefinition IsBodyHtml ="false" subject="[http://www.cnblogs.com/linn]密码">
3         </maildefinition>
4     </asp:PasswordRecovery>
程序的web.config中需要设置
1   <system.net>
2     <mailSettings>
3       <smtp from="linn@**.net">
4         <network host="mail.server.iporname" password="mail_password" userName="linn——www.cnblogs.com——linn" />
5       </smtp>
6     </mailSettings>
7   </system.net>
这样你能使用邮件找到密码了。
posted on 2007-05-31 10:26  凌度  阅读(1342)  评论(2编辑  收藏  举报