ASP.NET身份验证机制membership入门——API篇

注本文引用自:http://www.cnblogs.com/xlb2000/archive/2010/07/23/1780824.html 谢谢这个大牛,这篇文章我保存起来自己用了!谢谢。

不知道什么原因,最近总是头晕脑胀,做什么事情感觉都不在状态,再加上工作忙,觉得好累~不过不管怎么说,写博客一定要坚持,最少一月一篇~这算是给自己的任务吧。

  回到正题,前面说过如何去配置Membership,以及如何去使用Asp.net自带的登陆控件。这次说明一下如何不使用Asp.net自带的登陆控件,而通过编写代码的方式去完成相应的功能。

  要使用Membership我们需要引入System.Web.Security这个命名空间。在这个命名空间中有这么几个常用的类:

  1. Membership
  2. Roles

  首先来介绍第一个Membership类,Membership类是一个静态类,提供了所有的对于用户方面的操作,比如注册用户,删除用户,取得用户列表,根据email查找用户等等

  方法很多,但是大多数都很简单,我们挑两个比较麻烦点的来详细解释一下:

  Membership.CreateUser方法的功能,看名字就知道是创建用户,这个方法有4个重载:

public   static  MembershipUser CreateUser( string  username,  string  password);
public   static  MembershipUser CreateUser( string  username,  string  password,  string  email);
public   static  MembershipUser CreateUser( string  username,  string  password,  string  email,  string  passwordQuestion,  string  passwordAnswer,  bool  isApproved,  out  MembershipCreateStatus status);
public   static  MembershipUser CreateUser( string  username,  string  password,  string  email,  string  passwordQuestion,  string  passwordAnswer,  bool  isApproved,  object  providerUserKey,  out  MembershipCreateStatus status);

 

  这4个重载的返回值都是MembershipUser类,MembershipUser类其实就是一个实体类,不过里边带了一些方法,比如取得密码,修改密码等方法。至于该使用哪个重载,还记得前面的web.config配置么?比如requiresQuestionAndAnswer设置是否需要密码找回问题和答案,如果该设置为true,那么就得使用第三个,或者第四个重载,提供问题和答案了。isApproved这个参数表示创建的用户是否激活。最后一个MembershipCreateStatus 是一个枚举,用out关键字修饰,用来获得创建用户的状态,比如:MembershipCreateStatus.Success说明创建用户成功,MembershipCreateStatus.InvalidEmail说明电子邮件的格式错误等等。providerUserKey是一个Guid类型的数据,用来指定该用户的UserId。

  另一个需要介绍的就是public static bool ValidateUser(string username, string password);这个方法,其实看名字和参数大家都应该猜到这个方法的作用了,两个参数分别是用户名和密码,返回值为是否登录成功。剩下的方法都非常的简单了。大家应该一看就明白,不过需要提一下的是:ValidateUser方法经常和FormsAuthentication类配合起来使用,FormsAuthentication类提供了一系列静态方法,用来管理Forms身份验证服务。

  FormsAuthentication类中,常用方法有:

public   static   string  HashPasswordForStoringInConfigFile( string  password,  string  passwordFormat);
public static void SetAuthCookie(string userName, bool createPersistentCookie); public   static   void  RedirectFromLoginPage( string  userName,  bool  createPersistentCookie);

   第一个HashPasswordForStoringInConfigFile方法,作用很简单,将传入的password按照passwordFormat指定的哈希算法生成哈希密码然后返回,passwordFormat的取值可以是"MD5”或是"SHA1"这两个选择。

      第二个SetAuthCookie方法,向客户端发送身份验证的票据。userName是登陆的用户名,createPersistentCookie用来告诉Asp.net是否创建一个持久的Cookie,让用户下次访问能够免于登陆。

   第三个RedirectFormLoginPage方法,将经过身份验证的用户重定向回最初请求的 URL 或默认 URL。

 通常就是这样的用法:

if  (Membership.ValidateUser( " zhangsan " " 123123 " )) {     FormsAuthentication.RedirectFromLoginPage( " zhangsan " false ); }

 Roles类同样是一个静态类,里边封装了所有对于角色相关的方法。比如:创建角色、将用户添加到角色,删除角色等常用操作。使用Roles类要注意:web.config配置中roleManager节必须正确配置,并且enabled属性必须等于true才可以使用。

  Roles类中,需要说一下的是AddUserToRole这个方法,这个方法通常和Membership.CreateUser在一起使用,比如:

if  (Membership.CreateUser( " zhangsan " " 123123 " )) {      // 创建用户成功,给zhangsan分配User角色     Roles.AddUserToRole( " zhangsan " " User " ); }

   这样,在创建zhangsan这个用户之后,顺便给zhangsan分配了User这个角色。在后面,就可以再配置文件中做如下配置:

复制代码
< configuration >      < appSettings />      < connectionStrings />      < system.web >        < authorization >          < allow  roles ="User" />          < deny  users ="?" />        </ authorization >      </ system.web > </ configuration >
复制代码

 这样,所有新注册的成员才可以访问本目录下的资源,具体配置可以参考ASP.NET身份验证机制membership入门——配置篇(2)

   ok.API的部分就介绍到这里了

转载于:https://www.cnblogs.com/liuyu7177/archive/2013/05/07/3065026.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值