Asp.net网站开发(三)成员资格和角色管理

成员资格管理

Membership类用于验证用户凭证并管理用户设置

Membership属性:

ApplicationName

获取或设置应用程序的名称。

EnablePasswordReset

获得一个值,指示当前成员资格提供程序是否配置为允许用户重置其密码。

EnablePasswordRetrieval

获得一个值,指示当前成员资格提供程序是否配置为允许用户检索其密码。

HashAlgorithmType

用于哈希密码的算法的标识符。

MaxInvalidPasswordAttempts

获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。

MinRequiredNonAlphanumericCharacters

获取有效密码中必须包含的最少特殊字符数。

MinRequiredPasswordLength

获取密码所要求的最小长度。

PasswordAttemptWindow

获取时间长度,在该时间间隔内对提供有效密码或密码答案的连续失败尝试次数进行跟踪。

PasswordStrengthRegularExpression

获取用于计算密码的正则表达式。

Provider

获取对应用程序的默认成员资格提供程序的引用。

Providers

获取一个用于 ASP.NET 应用程序的成员资格提供程序的集合。

RequiresQuestionAndAnswer

获取一个值,该值指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题。

UserIsOnlineTimeWindow

指定用户在最近一次活动的日期/时间戳之后被视为联机的分钟数。

Membership方法

 

名称

说明

CreateUser(String, String)

将新用户添加到数据存储区。

CreateUser(String, String, String)

将具有指定的电子邮件地址的新用户添加到数据存储区。

CreateUser(String, String, String, String, String, Boolean, MembershipCreateStatus )

将具有指定属性值的新用户添加到数据存储区,并返回一个状态参数,指示该用户是否成功创建或用户创建失败的原因。

CreateUser(String, String, String, String, String, Boolean, Object, MembershipCreateStatus )

将具有指定的属性值和唯一的标识符的新用户添加到数据存储区,并返回一个状态参数,指示该用户是否成功创建或用户创建失败的原因。

DeleteUser(String)

从数据库中删除用户和任何相关的用户数据。

DeleteUser(String, Boolean)

从数据库中删除一个用户。

FindUsersByEmail(String)

获取一个成员资格用户的集合,其中的电子邮件地址包含要匹配的指定电子邮件地址。

FindUsersByEmail(String, Int32, Int32, Int32 )

获取一个成员资格用户的集合并显示在一个数据页中,这些用户的电子邮件地址包含要匹配的指定电子邮件地址。

FindUsersByName(String)

获取一个成员资格用户的集合,其中的用户名包含要匹配的指定用户名。

FindUsersByName(String, Int32, Int32, Int32 )

获取一个成员资格用户的集合,并显示在一个数据页中,这些用户的用户名包含要匹配的指定用户名。

GeneratePassword

生成指定长度的随机密码。

GetAllUsers()

获取数据库中所有用户的集合。

GetAllUsers(Int32, Int32, Int32 )

获取数据库中的所有用户的集合,并显示在数据页中。

GetNumberOfUsersOnline

获取当前访问应用程序的用户数。

GetUser()

从数据源获取信息并为当前已登录的成员资格用户更新最后一次活动日期/时间戳。

GetUser(Boolean)

从数据源获取当前已登录的成员资格用户的信息。为当前已登录的成员资格用户(如果被指定)更新最后一次活动的日期/时间戳。

GetUser(Object)

从数据源获取与指定的唯一标识符关联的成员资格用户信息。

GetUser(String)

从数据源获取指定成员资格用户的信息。

GetUser(Object, Boolean)

从数据源获取与指定的唯一标识符关联的成员资格用户信息。更新用户(如果指定)的最近一次活动的日期/时间戳。

GetUser(String, Boolean)

从数据源获取指定成员资格用户的信息。更新用户(如果指定)的最近一次活动的日期/时间戳。

GetUserNameByEmail

获取一个用户名,其中该用户的电子邮件地址与指定的电子邮件地址匹配。

UpdateUser

用指定用户的信息更新数据库。

ValidateUser

验证提供的用户名和密码是有效的。

建立成员资格支持:

1.      打开sql数据库

2.      打开vs命令提示,输入“aspnet_regsql”,完成配置

 


3.      新建asp.net网站,修改配置文件

<connectionStrings>

       <addname="aspnetdbConnectionString"connectionString="Data Source=.;InitialCatalog=aspnetdb;Integrated Security=True"

            providerName="System.Data.SqlClient"/>

   </connectionStrings>

 

   <system.web>

     <authenticationmode="Forms" />

     <membershipdefaultProvider="AspMembershipProvider">

       <providers>

          <clear/>

          <add

            name="AspMembershipProvider"

            type="system.web.Security.SqlMembershipProvider"

            connectionStringName="aspnetdbConnectionString"

            />

       </providers>

     </membership>

 

4.      在asp.net网站中单击“asp.net配置”

5.      选择“安全”选项卡,单击“使用安全设置向导按部就班的配置安全性”,一直单击“下一步”,在这一页修改选择访问方式,完成新用户创建。

成员资格管理实例:

登录页面Default.aspx源码为:

<%@ PageLanguage="C#"AutoEventWireup="true"CodeBehind="Default.aspx.cs"Inherits="WebApplication1._Default"%>

 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

 

<html xmlns="http://www.w3.org/1999/xhtml">

<head runat="server">

    <title></title>

</head>

<body>

  <form id="form1" runat="server">

    <h3>Create NewUser</h3>

 

    <asp:Label id="Msg" ForeColor="maroon" runat="server" /><br />

 

    <table cellpadding="3" border="0">

      <tr>

        <td>Username:</td>

        <td><asp:Textbox id="UsernameTextbox" runat="server" /></td>

        <td><asp:RequiredFieldValidator id="UsernameRequiredValidator" runat="server"

                                        ControlToValidate="UserNameTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/></td>

      </tr>

      <tr>

        <td>Password:</td>

        <td><asp:Textbox id="PasswordTextbox" runat="server" TextMode="Password" /></td>

        <td><asp:RequiredFieldValidator id="PasswordRequiredValidator" runat="server"

                                        ControlToValidate="PasswordTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/></td>

      </tr>

      <tr>

        <td>ConfirmPassword:</td>

        <td><asp:Textbox id="PasswordConfirmTextbox" runat="server"TextMode="Password"/></td>

        <td><asp:RequiredFieldValidator id="PasswordConfirmRequiredValidator" runat="server"

                                        ControlToValidate="PasswordConfirmTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/>

            <asp:CompareValidator id="PasswordConfirmCompareValidator" runat="server"

                                        ControlToValidate="PasswordConfirmTextbox"ForeColor="red"

                                        Display="Static" ControlToCompare="PasswordTextBox"

                                        ErrorMessage="Confirmpassword must match password." />

        </td>

      </tr>

      <tr>

        <td>EmailAddress:</td>

        <td><asp:Textbox id="EmailTextbox" runat="server" /></td>

        <td><asp:RequiredFieldValidator id="EmailRequiredValidator" runat="server"

                                        ControlToValidate="EmailTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/></td>

      </tr>

 

 

  <% if (Membership.RequiresQuestionAndAnswer) { %>

 

      <tr>

        <td>PasswordQuestion:</td>

        <td><asp:Textbox id="PasswordQuestionTextbox" runat="server"/></td>

        <td><asp:RequiredFieldValidator id="PasswordQuestionRequiredValidator" runat="server"

                                        ControlToValidate="PasswordQuestionTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/></td>

      </tr>

      <tr>

        <td>PasswordAnswer:</td>

        <td><asp:Textbox id="PasswordAnswerTextbox" runat="server"/></td>

        <td><asp:RequiredFieldValidator id="PasswordAnswerRequiredValidator" runat="server"

                                        ControlToValidate="PasswordAnswerTextbox"ForeColor="red"

                                        Display="Static"ErrorMessage="Required"/></td>

      </tr>

 

  <% } %>

 

 

      <tr>

        <td></td>

        <td><asp:Button id="CreateUserButton" Text="Create User" OnClick="CreateUser_OnClick"runat="server"/></td>

      </tr>

    </table>

  </form>

 

 

</body>

</html>

 

 

登录页面Default.aspx.cs源码为:

 
 

public void CreateUser_OnClick(object sender, EventArgs args)

  {

    // Create new user and retrieve create statusresult.

  

  

    MembershipCreateStatus status;

    string passwordQuestion = "";

    string passwordAnswer = "";

  

    if (Membership.RequiresQuestionAndAnswer)

    {

      passwordQuestion = PasswordQuestionTextbox.Text;

      passwordAnswer = PasswordAnswerTextbox.Text;

    }

  

    try

    {

      MembershipUser newUser = Membership.CreateUser(UsernameTextbox.Text, PasswordTextbox.Text, 

                                                     EmailTextbox.Text, passwordQuestion,

                                                     passwordAnswer, true, out status);

      if (newUser == null)

      {

        Msg.Text = GetErrorMessage(status);

      }

      else

      {

        Response.Redirect("login.aspx");

      }

    }

    catch

    {

      Msg.Text = "Anexception occurred creating the user.";

    }

  }

  

  public string GetErrorMessage(MembershipCreateStatus status)

  {

     switch (status)

     {

        case MembershipCreateStatus.DuplicateUserName:

          return "Usernamealready exists. Please enter a different user name.";

  

        case MembershipCreateStatus.DuplicateEmail:

          return "A usernamefor that e-mail address already exists. Please enter a different e-mailaddress.";

  

        case MembershipCreateStatus.InvalidPassword:

          return "Thepassword provided is invalid. Please enter a valid password value.";

  

        case MembershipCreateStatus.InvalidEmail:

          return "The e-mailaddress provided is invalid. Please check the value and try again.";

  

        case MembershipCreateStatus.InvalidAnswer:

          return "Thepassword retrieval answer provided is invalid. Please check the value and tryagain.";

  

        case MembershipCreateStatus.InvalidQuestion:

          return "Thepassword retrieval question provided is invalid. Please check the value and tryagain.";

  

        case MembershipCreateStatus.InvalidUserName:

          return "The username provided is invalid. Please check the value and try again.";

  

        case MembershipCreateStatus.ProviderError:

          return "Theauthentication provider returned an error. Please verify your entry and tryagain. If the problem persists, please contact your system administrator.";

  

        case MembershipCreateStatus.UserRejected:

          return "The usercreation request has been canceled. Please verify your entry and try again. Ifthe problem persists, please contact your system administrator.";

  

        default:

          return "An unknownerror occurred. Please verify your entry and try again. If the problempersists, please contact your system administrator.";

     }

  }


角色管理

配置角色管理,定义角色,添加用户到角色以及建立访问规则最容易的方法是使用asp.net网站管理配置工具。

角色管理

1.      修改配置文件:

写在membership后面

<roleManagerdefaultProvider="AspRoleProvider">

       <providers>

          <clear />

          <addconnectionStringName="aspnetdbConnectionString"name="AspRoleProvider"

            type="system.web.Security.SqlRoleProvider" />

       </providers>

     </roleManager>

2.      网站中单击“asp.net配置”,单击“创建或管理角色”

创建新角色,单击“添加角色

管理角色名称

将用户添加到角色中

 Roles类属性:

 

名称

说明

ApplicationName

获取或设置要存储和检索其角色信息的应用程序的名称。

CacheRolesInCookie

获取一个值,该值指示当前用户的角色是否已缓存在某个 Cookie 中。

CookieName

获取在其中缓存角色名称的 Cookie 的名称。

CookiePath

获取缓存角色名称的 Cookie 的路径。

CookieProtectionValue

获取一个指示如何保护在 Cookie 中缓存的角色名称的值。

CookieRequireSSL

获取一个值,该值指示角色名称 Cookie 是否需要 SSL 以便返回到服务器。

CookieSlidingExpiration

指示是否将要定期重置角色名称 Cookie 的到期日期和时间。

CookieTimeout

获取角色 Cookie 到期前的分钟数。

CreatePersistentCookie

获取一个值,该值指示角色名称 Cookie 是基于会话的还是持久性的。

Domain

获取角色名称 Cookie 的域的值。

Enabled

获取或设置用来指示是否为当前 Web 应用程序启用角色管理的值。

MaxCachedResults

获取要为用户缓存的角色名称的最大数量。

Provider

获取应用程序的默认角色提供程序。

Providers

获取 ASP.NET 应用程序的角色提供程序的集合。

Roles类方法

 

名称

说明

AddUsersToRole

将指定的用户添加到指定的角色中。

AddUsersToRoles

将指定的用户添加到指定的角色中。

AddUserToRole

将指定的用户添加到指定的角色中。

AddUserToRoles

将指定的用户添加到指定的角色中。

CreateRole

将新的角色添加到数据源。

DeleteCookie

删除在其中缓存角色名称的 Cookie

DeleteRole(String)

从数据源移除一个角色。

DeleteRole(String, Boolean)

从数据源移除一个角色。

FindUsersInRole

获取属于指定角色的用户的列表,其中用户名包含要匹配的指定用户名。

GetAllRoles

获取应用程序的所有角色的列表。

GetRolesForUser()

获取当前登录的用户所属角色的列表。

GetRolesForUser(String)

获取一个用户所属角色的列表。

GetUsersInRole

获取一个用户所属角色的列表。

IsUserInRole(String)

获取一个值,该值指示当前登录的用户是否属于指定的角色。

IsUserInRole(String, String)

获取一个指示指定用户是否属于指定角色的值。

RemoveUserFromRole

从指定的角色中移除指定的用户。

RemoveUserFromRoles

从指定的角色中移除指定的用户。

RemoveUsersFromRole

从指定的角色中移除指定的用户。

RemoveUsersFromRoles

移除指定角色中的指定用户名。

RoleExists

获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。

角色管理实例

1.      webForm1.aspx页面

2.      webForm1.aspx.cs页面

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.Security;

 

namespace WebApplication1

{

    public partial class WebForm1 : System.Web.UI.Page

    {

        protectedvoid Page_Load(objectsender, EventArgs e)

        {

  GridView1.DataSource = Roles.GetAllRoles();

           GridView1.DataBind();

        }

 

        protectedvoid Button1_Click(objectsender, EventArgs e)

        {           

 string a =TextBox1.Text;

            if(!Roles.RoleExists(a))

            {

                Roles.CreateRole(a);

                GridView1.DataSource = Roles.GetAllRoles();

                GridView1.DataBind();

                Response.Write("添加角色");

            }

            else

            {

                Response.Write("角色名不能重复");

            }

        }

    }

}

 

猜你喜欢

转载自blog.csdn.net/sinat_40900884/article/details/79918852