―身份认证与权限管理
1 简介 ..................................................................................................................... 3 2
准备环境 ............................................................................................................ 3
2.1 2.2 2.3
准备数据库 ....................................................................................................................... 3 修改提供程序 ................................................................................................................... 3 测试 ................................................................................................................................... 4
3 成员资格管理类 ................................................................................................ 4
3.1
MEMBERSHIP 类 ................................................................................................................ 4
方法 ...................................................................................................................................... 6 属性 ...................................................................................................................................... 7 事件 ...................................................................................................................................... 8
3.1.1 3.1.2 3.1.3
3.2 MEMBERSHIPUSER 类 ....................................................................................................... 9
构造函数 .............................................................................................................................. 9 方法 ...................................................................................................................................... 9 属性 .................................................................................................................................... 10
3.2.1 3.2.2 3.2.3
3.3 ROLES类 ......................................................................................................................... 11
方法 .................................................................................................................................... 11 属性 .................................................................................................................................... 12
3.3.1 3.3.2
3.4 FORMSAUTHENTICATION 类 ........................................................................................... 14
构造函数 .............................................................................................................................. 15 方法 .................................................................................................................................... 15 属性 .................................................................................................................................... 16
3.4.1 3.4.2 3.4.3
4 操作实例 .......................................................................................................... 17
4.1 4.2 4.3
搭建环境 ......................................................................................................................... 18 配置工具 ......................................................................................................................... 18 代码编程 ......................................................................................................................... 18
创建用户 .............................................................................................................................. 18 删除用户 .............................................................................................................................. 18
1 / 18
4.3.1 4.3.2
4.3.3 4.3.4 4.3.5 4.3.6 4.3.7 4.3.8 4.3.9 4.3.10
创建角色 .............................................................................................................................. 18 删除角色 .............................................................................................................................. 18 将用户添加至角色 ............................................................................................................... 18 将用户从角色移除 ............................................................................................................... 18 为角色添加用户 ................................................................................................................... 18 判断用户是否属于角色 ....................................................................................................... 18 验证用户登录是否 ............................................................................................................... 18 修改用户密码 .................................................................................................................. 18
4.4 为用户和角色设置访问权限 ......................................................................................... 18
配置站点地图提供程序 ....................................................................................................... 18 配置工具设置....................................................................................................................... 18 配置文件设置....................................................................................................................... 18
4.4.1 4.4.2 4.4.3
4.5测试 ...................................................................................................................................... 18
2 / 18
1
简介
采用.NET自带身份验证与权限管理机制实现网站的身份验证与权限管理,保证
网站安全性。
采用成员和角色的概念来实现权限管理,结合站点地图,可实现对不同权限的用户显示不同的菜单,允许操作不同的功能。
2 准备环境
2.1 准备数据库
1) 新建自定义数据库,如db_Net.mdf
2) 运行aspnet_regsql工具,位于C:\\Windows\\Microsoft.NET\\Framework\\v2.0.50727
目录,将AspNetSqlProvider的数据库修改为用户自定义数据库db_Net.mdf
2.2 修改提供程序
1) 在配置文件web.config中定义数据库连接字符串:
2) 添加Membership定义
maxInvalidPasswordAttempts=\"5\" minRequiredPasswordLength=\"6\" minRequiredNonalphanumericCharacters=\"1\" passwordAttemptWindow=\"10\" 3 / 18 passwordStrengthRegularExpression=\"\" type=\"System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a\" />
3) 添加Roles定义
4) 添加SiteMapProvider定义
5) 设置Authentication Mode
2.3 测试
1) 连接数据库db_Net,查看数据库的表和视图
2) 在Visual Studio工具中,在“网站”菜单栏中选择“ASP.NET配置”进入配置程序
3 成员资格管理类
3.1 Membership 类
验证用户凭据并管理用户设置。无法继承此类。静态类,使用时不需要实例化,与MembershipUser类有区别。
命名空间: System.Web.Security
4 / 18
在 ASP.NET 应用程序中,Membership 类用于验证用户凭据并管理用户设置(如密码和电子邮件地址)。Membership 类可以独自使用,或者与 FormsAuthentication 一起使用以创建一个完整的 Web 应用程序或网站的用户身份验证系统。Login 控件封装了 Membership 类,从而提供一种便捷的用户验证机制。 Membership 类提供的功能可用于:
• •
创建新用户。
将成员资格信息(用户名、密码、电子邮件地址及支持数据)存储在 Microsoft SQL Server 或其他类似的数据存储区。
• 对访问网站的用户进行身份验证。可以以编程方式对用户进行身份验证,也可以使用 Login 控件创建一个只需很少代码或无需代码的完整的身份验证系统。
• 管理密码,包括创建、更改、检索和重置密码等等。可以选择配置 ASP.NET 成员资格以要求一个密码提示问题及其答案来对忘记密码的用户的密码重置和检索请求进行身份验证。
虽然 ASP.NET 成员资格是 ASP.NET 中用来进行身份验证的功能,但它可以与 ASP.NET 角色管理集成来为站点提供授权服务。成员资格还可以与 ASP.NET 用户的 System.Web.Profile 集成,以提供可为各个用户量身订做的特定于应用程序的自定义实现。有关详细信息,请参见 了解角色管理 和 ASP.NET 配置文件属性概述。
Membership 类依赖于成员资格提供程序与数据源通信。.NET Framework 包括一个 SqlMembershipProvider(将用户信息存储在 Microsoft SQL Server 数据库中)。还可以实现一个自定义成员资格提供程序与可由
Membership 类使用的其他类似的数据源进行通信。自定义成员资格提供程序将继承 MembershipProvider 抽象类。有关更多信息,请参见 实现成员资格提供程序。
默认情况下,ASP.NET 成员资格可支持所有 ASP.NET 应用程序。默认成员资格提供程序为
SqlMembershipProvider 并在计算机配置中以名称 AspNetSqlProvider 指定。SqlMembershipProvider 的默认实例配置为连接到 Microsoft SQL Server 的一个本地实例。
可以通过修改默认设置将一个非 AspNetSqlProvider 实例的 SqlMembershipProvider 指定为默认提供程序,或使用 Web.config 文件将自定义提供程序的实例指定为 ASP.NET 应用程序的默认提供程序。可以使用 Web.config 文件中 membership 配置节来为 Web 应用程序指定 ASP.NET 成员资格配置。可以使用 membership 节的 providers 子节来指定默认提供程序之一以外的成员资格提供程序。
Membership 类型公开了以下成员。
5 / 18
3.1.1 方法
名称 说明 CreateUser 已重载。 将新用户添加到数据存储区。 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 已重载。 从数据库中删除一个用户。 FindUsersByEmail 已重载。 获取一个成员资格用户的集合,其中的电子邮件地址包含要匹配的指定电子邮件地址。 FindUsersByName 已重载。 获取一个成员资格用户的集合,其中的用户名包含要匹配的指定用户名。 GeneratePassword 生成指定长度的随机密码。 6 / 18
GetAllUsers 已重载。 获取数据库中用户的集合。 GetNumberOfUsersOnline 获取当前访问应用程序的用户数。 GetUser 已重载。 从数据源获取成员资格用户的信息。 GetUserNameByEmail 获取一个用户名,其中该用户的电子邮件地址与指定的电子邮件地址匹配。 UpdateUser 用指定用户的信息更新数据库。 ValidateUser 验证提供的用户名和密码是有效的。 3.1.2 属性
名称 说明 ApplicationName 获取或设置应用程序的名称。 EnablePasswordReset 获得一个值,指示当前成员资格提供程序是否配置为允许用户重置其密码。 EnablePasswordRetrieval 获得一个值,指示当前成员资格提供程序是否配置为允许用户检索其密码。 HashAlgorithmType 用于哈希密码的算法的标识符。 7 / 18
MaxInvalidPasswordAttempts 获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。 MinRequiredNonAlphanumericCharacters 获取有效密码中必须包含的最少特殊字符数。 MinRequiredPasswordLength 获取密码所要求的最小长度。 PasswordAttemptWindow 获取时间长度,在该时间间隔内对提供有效密码或密码答案的连续失败尝试次数进行跟踪。 PasswordStrengthRegularExpression 获取用于计算密码的正则表达式。 Provider 获取对应用程序的默认成员资格提供程序的引用。 Providers 获取一个用于 ASP.NET 应用程序的成员资格提供程序的集合。 RequiresQuestionAndAnswer 获取一个值,该值指示默认成员资格提供程序是否要求用户在进行密码重置和检索时回答密码提示问题。 UserIsOnlineTimeWindow 指定用户在最近一次活动的日期/时间戳之后被视为联机的分钟数。 3.1.3 事件
名称 说明 ValidatingPassword 在创建用户、更改密码或重置密码时发生。 8 / 18
3.2 MembershipUser 类
公开和更新成员资格数据存储区中的成员资格用户信息。属于一个用户实例,在使用前需要实例化。
MembershipUser 对象用于表示成员资格数据存储区中的单个成员资格用户。该对象公开有关成员资格用户的信息(如电子邮件地址),并为成员资格用户提供功能(如更改或重置其密码的功能)。
MembershipUser 对象可由 GetUser 和 CreateUser 方法返回,或是作为 GetAllUsers、FindUsersByName 和 FindUsersByEmail 方法返回的 MembershipUserCollection 的一部分返回。
当要更新现有成员资格用户的信息时,UpdateUser 方法需要 MembershipUser 对象。 公开和更新成员资格数据存储区中的成员资格用户信息。 MembershipUser 类型公开了以下成员。
3.2.1 构造函数
名称 说明 MembershipUser 已重载。 使用指定的属性值创建新的成员资格用户对象。 3.2.2 方法
名称 说明 ChangePassword 更新成员资格数据存储区中成员资格用户的密码。 ChangePasswordQuestionAndAnswer 更新成员资格数据存储区中成员资格用户的密码提示问题和密码提示问题答案。 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) Finalize 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。) 9 / 18
GetHashCode 用作特定类型的哈希函数。 (继承自 Object。) GetPassword 已重载。 从成员资格数据存储区获取成员资格用户的密码。 GetType 获取当前实例的 Type。 (继承自 Object。) MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。) ResetPassword 已重载。 将用户密码重置为一个自动生成的新密码。 ToString 返回成员资格用户的用户名。 (重写 Object.ToString()。) UnlockUser 清除用户的锁定状态以便可以验证成员资格用户。 3.2.3 属性
名称 说明 Comment 获取或设置成员资格用户的特定于应用程序的信息。 CreationDate 获取将用户添加到成员资格数据存储区的日期和时间。 Email 获取或设置成员资格用户的电子邮件地址。 IsApproved 获取或设置一个值,表示是否可以对成员资格用户进行身份验证。 IsLockedOut 获取一个值,该值指示成员资格用户是否因被锁定而无法进行验证。 IsOnline 获取一个值,表示用户当前是否联机。 LastActivityDate 获取或设置成员资格用户上次进行身份验证或访问应用程序的日期和时间。 LastLockoutDate 获取最近一次锁定成员资格用户的日期和时间。 LastLoginDate 获取或设置用户上次进行身份验证的日期和时间。 LastPasswordChangedDate 获取上次更新成员资格用户的密码的日期和时间。 10 / 18
PasswordQuestion 获取成员资格用户的密码提示问题。 ProviderName 获取成员资格提供程序的名称,该提供程序存储并检索成员资格用户的用户信息。 ProviderUserKey 从用户的成员资格数据源获取用户标识符。 UserName 获取成员资格用户的登录名。
3.3 Roles类
管理角色中的用户成员资格,以便在 ASP.NET 应用程序中进行授权检查。无法继承此类。 命名空间: System.Web.Security
利用 ASP.NET 角色管理,您能够根据用户组(称为角色)来管理应用程序的授权。通过向用户分配角色,您可以根据角色来控制对您的 Web 应用程序的不同部分或功能的访问,而无需通过根据用户名指定授权(或除了这样做之外)来控制此类访问。例如,某个员工应用程序可能具有如“经理”、“员工”、“董事”等角色,而且为每个角色都指定了不同的权限。 Roles 类型公开了以下成员。
3.3.1 方法
名称 说明 AddUsersToRole 将指定的用户添加到指定的角色中。 AddUsersToRoles 将指定的用户添加到指定的角色中。 AddUserToRole 将指定的用户添加到指定的角色中。 AddUserToRoles 将指定的用户添加到指定的角色中。 CreateRole 将新的角色添加到数据源。 11 / 18
DeleteCookie 删除在其中缓存角色名称的 Cookie。 DeleteRole 已重载。 从数据源移除一个角色。 FindUsersInRole 获取属于指定角色的用户的列表,其中用户名包含要匹配的指定用户名。 GetAllRoles 获取应用程序的所有角色的列表。 GetRolesForUser 已重载。 获取一个用户所属角色的列表。 GetUsersInRole 获取一个用户所属角色的列表。 IsUserInRole 已重载。 获取一个指示用户是否属于指定角色的值。 RemoveUserFromRole 从指定的角色中移除指定的用户。 RemoveUserFromRoles 从指定的角色中移除指定的用户。 RemoveUsersFromRole 从指定的角色中移除指定的用户。 RemoveUsersFromRoles 移除指定角色中的指定用户名。 RoleExists 获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。 3.3.2 属性
名称 说明 ApplicationName 获取或设置要存储和检索其角色信息的应用程序的名称。 CacheRolesInCookie 获取一个值,该值指示当前用户的角色是否已缓存在某个 Cookie 中。 CookieName 获取在其中缓存角色名称的 Cookie 的名称。 12 / 18
CookiePath 获取缓存角色名称的 Cookie 的路径。 CookieProtectionValue 获取一个指示如何保护在 Cookie 中缓存的角色名称的值。 CookieRequireSSL 获取一个值,该值指示角色名称 Cookie 是否需要 SSL 以便返回到服务器。 CookieSlidingExpiration 指示是否将要定期重置角色名称 Cookie 的到期日期和时间。 CookieTimeout 获取角色 Cookie 到期前的分钟数。 CreatePersistentCookie 获取一个值,该值指示角色名称 Cookie 是基于会话的还是持久性的。 Domain 获取角色名称 Cookie 的域的值。 Enabled 获取或设置用来指示是否为当前 Web 应用程序启用角色管理的值。 MaxCachedResults 获取要为用户缓存的角色名称的最大数量。 Provider 获取应用程序的默认角色提供程序。 Providers
获取 ASP.NET 应用程序的角色提供程序的集合。 13 / 18
3.4 FormsAuthentication 类
为 Web 应用程序管理 Forms 身份验证服务。无法继承此类。 命名空间: System.Web.Security
Forms 身份验证使不要求 Windows 身份验证的 Web 应用程序可以进行用户和密码验证。使用 Forms 身份验证时,用户信息存储在外部数据源中,例如 Membership 数据库,或存储在应用程序的配置文件中。在用户通过身份验证后,Forms 身份验证即会在 Cookie 或 URL 中维护一个身份验证票证,这样已通过身份验证的用户就无需在每次请求时都提供凭据了。
可通过将 authentication 配置元素的 mode 属性设置为 Forms 来启用 Forms 身份验证。通过使用 authorization 配置元素可要求所有对应用程序的请求均需包含有效的用户身份验证票证,从而拒绝任何未知用户的请求,如下面的示例所示。
复制代码
在上面的示例中,对作为应用程序的一部分的 ASP.NET 页的任何请求都需要 Forms 身份验证提供的有效用户名。如果用户名不存在,则该请求重定向到所配置的 LoginUrl。
FormsAuthentication 类提供了相应的方法和属性,您可以在需对用户进行身份验证的应用程序中使用它们。RedirectToLoginPage 方法将浏览器重定向到已配置的 LoginUrl,以便用户可以登录到应用程序。
RedirectFromLoginPage 方法将通过身份验证的用户重定向回最初请求的受保护 URL 或 DefaultUrl。如果需要,还可以使用其他方法来管理 Forms 身份验证票证。 FormsAuthentication 类型公开了以下成员。
14 / 18
3.4.1 构造函数
名称 说明
FormsAuthentication 初始化 FormsAuthentication 类的新实例。
3.4.2 方法
名称 说明 Authenticate 对照存储在应用程序配置文件中的凭据来验证用户名和密码。 Decrypt 创建一个 FormsAuthenticationTicket 对象,此对象将根据传递给该方法的加密的 Forms 身份验证票证而定。 Encrypt 创建一个字符串,其中包含适用于 HTTP Cookie 的加密的 Forms 身份验证票证。 Equals 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) Finalize 允许 Object 在“垃圾回收”回收 Object 之前尝试释放资源并执行其他清理操作。 (继承自 Object。) GetAuthCookie 已重载。 为给定的用户名创建身份验证 Cookie。 GetHashCode 用作特定类型的哈希函数。 (继承自 Object。) GetRedirectUrl 返回导致重定向到登录页的原始请求的重定向 URL。 15 / 18
GetType 获取当前实例的 Type。 (继承自 Object。) HashPasswordForStoringInConfigFile 根据指定的密码和哈希算法生成一个适合于存储在配置文件中的哈希密码。 Initialize 根据应用程序的配置设置初始化 FormsAuthentication 对象。 MemberwiseClone 创建当前 Object 的浅表副本。 (继承自 Object。) RedirectFromLoginPage 已重载。 将经过身份验证的用户重定向回最初请求的 URL 或默认 URL。 RedirectToLoginPage 已重载。 将浏览器重定向到登录 URL。 RenewTicketIfOld 有条件地更新 FormsAuthenticationTicket 的发出日期和时间以及过期日期和时间。 SetAuthCookie 已重载。 为提供的用户名创建一个身份验证票证,并将其添加到响应的 Cookie 集合或 URL。 SignOut 从浏览器删除 Forms 身份验证票证。 ToString 返回表示当前 Object 的 String。 (继承自 Object。) 3.4.3 属性
名称 说明 CookieDomain 获取 Forms 身份验证 Cookie 的域的值。 CookieMode 获取一个值,该值指示是否已将应用程序配置为进行无 Cookie 的 Forms 身 16 / 18
份验证。 CookiesSupported 获取一个值,该值指示是否将应用程序配置为支持无 Cookie 的 Forms 身份验证。 DefaultUrl 获取在没有指定重定向 URL 时 FormsAuthentication 类将重定向到的 URL。 EnableCrossAppRedirects 获取一个值,该值指示是否可以将经过身份验证的用户重定向到其他 Web 应用程序中的 URL。 FormsCookieName 获取用于存储 Forms 身份验证票证的 Cookie 名称。 FormsCookiePath 获取 Forms 身份验证 Cookie 的路径。 LoginUrl 获取 FormsAuthentication 类将重定向到的登录页的 URL。 RequireSSL 获取一个值,指示 Forms 身份验证 Cookie 是否需要 SSL 以返回到服务器。 SlidingExpiration
获取一个值,它指示是否启用可调过期。 4 操作实例
17 / 18
4.1 搭建环境 4.2 配置工具 4.3 代码编程
4.3.1 创建用户 4.3.2 删除用户 4.3.3 创建角色 4.3.4 删除角色
4.3.5 将用户添加至角色 4.3.6 将用户从角色移除 4.3.7 为角色添加用户 4.3.8 判断用户是否属于角色 4.3.9 验证用户登录是否 4.3.10 修改用户密码
4.4 为用户和角色设置访问权限
4.4.1 配置站点地图提供程序 4.4.2 配置工具设置 4.4.3 配置文件设置
4.5 测试
18 / 18
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务