最近要做一个小项目,里面有许多权限设置,大脑一闪而过,如果能使用.net 提供的forms验证,那该方便很多吧。但是转念一想,之前也尝试用过,就是一直没有任何头绪,因为除了把它拖到界面来后 ,不知怎么进行代码级开发,网上似乎相关的资料也不多(难道是我百度能力不行?)。现在终于有点头绪,便写下部分心得,如有高手过目,望切莫取笑。
首先,要使用表单验证,web.config是肯定要配置的,这方面网上很多,我只列关键的。
<system.web>
<authentication mode="Forms" >
<forms loginUrl="login.aspx"
name=".ASPXFORMSAUTH" />
</authentication>
<authorization> <deny users="?" /> </authorization>
</system.web>
接着,进入"ASP.NET 配置" 在这里会创建一个用于保存 所有用户验证信息、用户角色的数据库,该数据库中会包含很多表,很多存储过程。
目前,我还没有找到可以不使用这个数据库的方法,所能采取的措施就是把自己系统其他功能的数据表整合到这个数据库中。如有高手可以不用这个
方法,请指点下。
数据库中:
aspnet_Users 用以存放 用户名
aspnet_membership 用以存放用户名外的其他信息,如密码、邮件
aspnet_roles 用以存放角色名称
aspnet_UsersInRoles 用以存放 用户 于 角色的关系。
其他的我暂时没有用到,不知啥功能。
登陆组件概论
1、Login 用以登陆,如果是采用了模板,就要用代码来开发了,后面再说吧
2、LoginView 用以区分不同角色所看见的界面,如经理和财务人员看见的财务信息是不可能相同的。
3、LoginName 显示登陆名称
4、LoginStatus 用于注销和登陆
5、6、7、其实会点英文你就该懂啥功能了,不说了呵呵。
最后,要真正进行代码开发,有3个类必须弄懂,看清楚。
1、Roles [public static class Roles]
2、membership [public static class Membership]
3、membershipUser [public class MembershipUser]
看完下面这个小例子,是不是觉得判别用户、查询角色不再是一件困难的事
如果 要进行更加复杂的功能,可以先查看MSDN上的解释,各种版本都有,如果有良好的英文水平,将是事半功倍。
我也刚上路,接下来会把一些东西放上来研究
membershipUser 类
属性:
名称 | 说明 | |
---|---|---|
Comment | 获取或设置成员资格用户的特定于应用程序的信息。 | |
CreationDate | 获取将用户添加到成员资格数据存储区的日期和时间。 | |
获取或设置成员资格用户的电子邮件地址。 | ||
IsApproved | 获取或设置一个值,表示是否可以对成员资格用户进行身份验证。 | |
IsLockedOut | 获取一个值,该值指示成员资格用户是否因被锁定而无法进行验证。 | |
IsOnline | 获取一个值,表示用户当前是否联机。 | |
LastActivityDate | 获取或设置成员资格用户上次进行身份验证或访问应用程序的日期和时间。 | |
LastLockoutDate | 获取最近一次锁定成员资格用户的日期和时间。 | |
LastLoginDate | 获取或设置用户上次进行身份验证的日期和时间。 | |
LastPasswordChangedDate | 获取上次更新成员资格用户的密码的日期和时间。 | |
PasswordQuestion | 获取成员资格用户的密码提示问题。 | |
ProviderName | 获取成员资格提供程序的名称,该提供程序存储并检索成员资格用户的用户信息。 | |
ProviderUserKey | 从用户的成员资格数据源获取用户标识符。 | |
UserName | 获取成员资格用户的登录名。 |
方法:
名称 | 说明 | |
---|---|---|
ChangePassword | 更新成员资格数据存储区中成员资格用户的密码。 | |
ChangePasswordQuestionAndAnswer | 更新成员资格数据存储区中成员资格用户的密码提示问题和密码提示问题答案。 | |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) | |
Finalize | 下面的示例使用 $$$$方法实例化一个字符串,表示 每个 Aegean 的数目。 (继承自 Object。) | |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) | |
GetPassword() | 从成员资格数据存储区获取成员资格用户的密码。 | |
GetPassword(String) | 从成员资格数据存储区获取成员资格用户的密码。 | |
GetType | 获取当前实例的 Type。 (继承自 Object。) | |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) | |
ResetPassword() | 将用户密码重置为一个自动生成的新密码。 | |
ResetPassword(String) | 将用户密码重置为一个自动生成的新密码。 | |
ToString | 返回成员资格用户的用户名。 (重写 Object.ToString()。) | |
UnlockUser | 清除用户的锁定状态以便可以验证成员资格用户。 |
membership 类
属性:
名称 | 说明 | |
---|---|---|
ApplicationName | 获取或设置应用程序的名称。 | |
EnablePasswordReset | 获得一个值,指示当前成员资格提供程序是否配置为允许用户重置其密码。 | |
EnablePasswordRetrieval | 获得一个值,指示当前成员资格提供程序是否配置为允许用户检索其密码。 | |
HashAlgorithmType | 用于哈希密码的算法的标识符。 | |
MaxInvalidPasswordAttempts | 获取锁定成员资格用户前允许的无效密码或无效密码提示问题答案尝试次数。 | |
MinRequiredNonAlphanumericCharacters | 获取有效密码中必须包含的最少特殊字符数。 | |
MinRequiredPasswordLength | 获取密码所要求的最小长度。 | |
PasswordAttemptWindow | 获取时间长度,在该时间间隔内对提供有效密码或密码答案的连续失败尝试次数进行跟踪。 | |
PasswordStrengthRegularExpression | 获取用于计算密码的正则表达式。 | |
Provider | 获取对应用程序的默认成员资格提供程序的引用。 | |
Providers | 获取一个用于 ASP.NET 应用程序的成员资格提供程序的集合。 | |
RequiresQuestionAndAnswer | 获取一个值,该值指示默认成员资格提供程序是否求用户在进行密码重置和检索时回答密码提示问题。 | |
UserIsOnlineTimeWindow | 指定用户在最近一次活动的日期/时间戳之后被视为联机的分钟数。 |
方法:
名称 | 说明 | |
---|---|---|
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 | 验证提供的用户名和密码是有效的。 |
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 应用程序的角色提供程序的集合。 |
方法:
名称 | 说明 | |
---|---|---|
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 | 获取一个值,该值指示指定的角色名称是否已存在于角色数据源中。 |