ASP.NET 2.0 成员管理

Form认证
web.config配置属性说明
 A。loginUrl:指定一个用于登录的页面。
 B。name:Cookie的名字,注意,如果一个服务器有很多应用的话(即IIS里运行多个网站时),要给cookie取不同的名字。
 C。TimeOut:Cookie的存活时间默认是30分钟。
 D。Protection:Cookie被保存的方式(防盗用和监听)。
 E。Path:Cookie的保存时间

Protection属性
 A。None:不使用任何方法保护cookie
 B。Encryption:使用des或者三层des对cookie进行加密,但是并不对cookie传输中是否被监听或篡改进行监视。(本地cookie是加密的)
 C。Validation:监视cookie,保证传输过程中不会被监听或者篡改。但是并不对cookie进行加密。(cookie发给谁就只接收从谁发回的信息)
 D。All:同时使用Encryption和Validation(建议使用)

使用文件记录用户的帐户和密码
 <authentication>
  <credentials passwordFormat="SHA1">
   <user name="Terry" password="84K38495EECC..."/>
   <user name="David" password="949F65C9374D..."/>
  </credentials>
 </authentication>
 保存方式
 A。Clear:不加密(明文保存)
 B。SHA1:使用SHA1进行加密
 C。MD5:使用MD5进行加密
 
授权用户与角色
用户访问还可以通过定制访问规则来实现对用户的角色分配:
 <authentication>
  <allow users="Terry"/>
  <allow roles="Admins"/>
  <deny users="*"/>
 </authentication>
 只有Terry这个用户可以访问,并且Terry必须具有管理员权限。
其它配置方式:
 <allow VERB="POST" users="Terry,David"/>
 <deny VERB="POST" users="*"/>
 <allow VERB="GET" users="*"/>
users属性:*表示所有用户,?表示匿名用户

成员管理

Membership中的信息保存在:App_Data下的ASPNETDB.MDF数据库(不建议手工对它进行任何修改)。

成员管理特性基于membership、membershipuser两个类。可以使用membership类为asp.net创建用户。
membership类还可以完成以下工作
 A。建立一个新的membershipuser(Membership.CreateUser)
 B。可以对用户身份进行验证(Membership.ValidateUser)
 C。找回一个membershipuser实例
 D。更新一个membershipuser实例
 E。通过不同条件寻找一个用户(Membership.GetUser)
 F。获得当前在线用户数量
 G。删除一个已经不再需要的帐户
 H。找回/修改一个用户的密码
 I。修改一个用户的密码问题以及密码问题的答案
 J。为一个已经因为多次尝试密码失败而锁定的用户解除锁定(UnlockUser)

Membership Demo:
web.config:
 <roleManager enabled="true" />  <!-- 在程序中对角色进行管理 -->
 <authentication mode="Forms"/>
 <location path="secured">  <!-- 用户登录后可访问secured文件夹里的页 -->
  <system.web>
   <authorization>
    <deny users="?"/>
    <allow users="*"/>
   </authorization>
  </system.web>
 </location>
 <location path="administrators_role">  <!-- 只有Administrators角色的用户才能访问 -->
  <system.web>
   <authorization>
    <allow roles="Administrators" />
    <deny users="*"/>
   </authorization>
  </system.web>
 </location>

代码片段

登录验证:
 if(Membership.ValidateUser(tbUserName.Text,tbPassword.Text))
 { FormsAuthentication.RedirectFromLoginPage(tbUserName.Text,cbRememberMe.check); }
密码尝试次数:
 MembershipUser user = Membership.GetUser(tbUserName.Text);
 if(... user.Comment...>...) user.IsApproved = false;
激活用户:
 MembershipUser user = Membership.GetUser(tbUserName.Text);
 user.IsApproved = true;
 Membership.UpdateUser(user);
登出操作:
 FormsAuthentication.SignOut()
 Roles.DeleteCookie()
 FormsAuthentication.RedirectToLoginPage()
绑定角色:
 Roles.GetAllRoles();
创建角色:
 Roles.CreateRole(myRoleName);
删除角色:
 Roles.DeleteRole(myRoleName);
关联角色与用户:
 Roles.IsUserInRole(myRoleName); //判断当前用户是否属于myRoleName角色
 Roles.AddUserToRole(myUserName,myRoleName);
 Roles.RemoveUserFromRole(myUserName,myRoleName);

原文地址:https://www.cnblogs.com/vipcjob/p/1557495.html