ASP.NET----成员资格管理与角色管理

1.成员资格管理

  1.1ASP.NET成员资格支持下列功能:

      (1) 创建新用户和密码
      (2) 将成员资格信息(用户名、密码和支持数据)存储在 Microsoft SQL Server Active Directory 或其他数据存储区
      (3) 对访问站点的用户进行身份验证
      (4) 管理密码,包括创建、更改和重置密码
      (5) 公开经过身份验证的用户的唯一标识,您可以在您自己的应用程序中使用该标识,也可以将该标识与 ASP.NET 个性化设置和角色管理(授权)系统集成
      (6) 指定自定义成员资格提供程序,这使您可以改为用自己的代码管理成员资格及在自定义数据存储区中维护成员资格数据

   1.2成员资源管理模型

      ASP.NET提供的成员资格管理功能,其核心是利用内置的成员库表(SQL Server)、成员资格管理APIMembershipMembershipUser等)、成员资格提供程序(SqlMembershipProvider等),实现模块化和自动化的成员资格管理模式。


       1.2.1 Membership类用于验证用户凭据并管理用户设置,具有以下几个主要功能:

           (1) 创建和管理用户
           (2) 将成员资格信息存储在 SQL Server 或其他数据存储区中
           (3) 对访问站点的用户进行身份验证。可以以编程方式对用户进行身份验证,也可以使用登录控件创建一个只需很少代码或无需代码的完整身份验证系统
           (4) 管理密码,包括创建、更改、检索和重置密码等。可以选择配置成员资格管理功能,以要求一个密码提示问题及其答案来对忘记密码的用户的密码进行重置

       1.2.2 Membership类常用属性

属性描述

ApplicationName

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

EnablePasswordReset

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

EnablePasswordRetrieval

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

MaxInvalidPasswordAttempts

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

MinRequiredNonAlphanumericCharacters

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

MinRequiredPasswordLength

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

PasswordAttemptWindow

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

PasswordStrengthRegularExpression

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

RequiresQuestionAndAnswer

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

UserIsOnlineTimeWindow

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

           1.2.3 Membership类常用方法

方法 描述

CreateUser

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

DeleteUser

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

FindUsersByEmail

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

FindUsersByName

已重载。获取一个成员资格用户的集合,这些用户的用户名包含要匹配的指定用户名。

GeneratePassword

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

GetAllUsers

已重载。获取数据库中用户的集合。

GetNumberOfUsersOnline

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

GetType 

获取当前实例的Type。(从Object 继承。)

GetUser

已重载。从数据源获取成员资格用户的信息。

GetUserNameByEmail

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

ReferenceEquals

确定指定的Object 实例是否是相同的实例。(从Object 继承。)

UpdateUser

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

ValidateUser

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

1.3配置成员资格支持

在vs2010中找到vs Tool中的visual studio 命令提示(2010)输入aspnet_regsql进入asp.net sql server 安装向导

进行如下操作


在已有数据库文件的情况下“<默认>”可选为自己的数据库文件



在数据库中查看

下面开始配置已经创建好的asp.net web应用程序项目中创建数据库连接,在Web.config中找到创建好的数据库连接代码如下:
注意图中所标注的两对框名称的一致性。

1.4 使用成员资格支持

在“项目(p)”中打开asp.net配置进入如下页面进行配置








1.5成员资格管理实例

可参照vs2010帮助文档中的Membership类中实例代码创建


2.成员角色管理

    2.1成员角色管理模型

        2.1.1ASP.NET提供的角色管理将整个控制过程分成两个步骤:

             (1) 访问权限与角色关联
             (2) 角色与用户关联

         2.2Roles类

        Roles 类分割了用户界面与执行底层数据访问的角色管理提供程序,从而为快速实现多种数据源存储的角色管理应用提供了技术支持
           2.2.1  Roles 类具有以下几个主要功能:
          (1) 创建和管理角色
          (2) 将角色信息存储在 SQL Server 或其他数据源中
          (3) 获取有关角色管理配置的详细内容

      2.2.2Roles类常用属性

 属性 说明

ApplicationName

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

CacheRolesInCookie

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

CookieName

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

CookiePath

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

CookieProtectionValue

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

CookieSlidingExpiration

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

Enabled

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

2.2.3Roles类常用方

 方法 说明

AddUsersToRole

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

CreateRole

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

DeleteCookie

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

DeleteRole

已重载。从数据源移除一个角色。

FindUsersInRole

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

GetAllRoles

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

GetRolesForUser

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

GetUsersInRole

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

IsUserInRole

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

RemoveUserFromRole

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

2.3成员角色管理



2.4 启用成员角色

  <!--连接的数据文件-->
    <connectionStrings>
        <add name="aspnetdbConnectionString" connectionString="Data Source=.;Initial Catalog=aspnetdb;Integrated Security=True"
            providerName="System.Data.SqlClient" />
    </connectionStrings>
   <!--添加角色-->
      <roleManager enabled="true" defaultProvider="AspRolesProvider">
        <providers>
          <clear />
          <add connectionStringName="aspnetdbConnectionString" name="AspRolesProvider"
            type="System.Web.Security.SqlRoleProvider" />
        </providers>
      </roleManager>

2.5 角色管理事例:

 protected void Button1_Click(object sender, EventArgs e)
        {
            //获取添加角色的角色信息
            string name = TextBox1.Text;
            //判断添加的角色是否存在
            if (!Roles.RoleExists(name))
            {
                //将新的角色添加到数据源
                Roles.CreateRole(name);
                //重新获取列表
                GridView1.DataSource = Roles.GetAllRoles();
                GridView1.DataBind();
            }
            else
            {
                Response.Write("角色以存在");
            }
        }
 

2.6 给用户名添加角

 //给用户名添加角色
        protected void Button1_Click(object sender, EventArgs e)
        {
            //如果用户名he没有添加角色sss就把他添加上
            if (!Roles.IsUserInRole("he", "sss"))
            {
                //将指定用户添加到指定的角色中
                Roles.AddUserToRole("he", "sss");
            }
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值