对asp.net站点身份验证及授权方法的比较(1)

asp.net的安全模型已经做得很好了,在此我只对这几种身份验证的方法做个比较

完全出自我个人的观点,如有不妥之处还望指正

asp.net中的身份验证方法:

1.窗体验证

2.windows验证

3、护照验证

4、自定义身份验证

对于窗体身份验证我觉得是一种比较方便的验证方法,你可以自定义角色,且其步骤比较简单

窗体身份验证的步骤

1、在web.config文件中将安全验证模式配置为窗体身份验证

<authentication mode="Forms" >
    <forms name="check"
          loginUrl="login.aspx"
          protection="All"
          timeout="20"
          path="/"></forms>
    </authentication>

注意这里的path设置为"/",login.aspx为你的窗体登陆页面,一会要在这个页面上生成身份票证

2、建立登陆页面

创建一个登陆页面,检验用户名密码(对密码的加密在这里就不再讨论了)而后将用户的身份信息存入(经过加密)存入用户cookie中(注意设置cookie的过期时间)以下是主要代码,这是我自己的程序,如要引用需要改写

string role=AccountManager.GetRole(this.TextBox_username.Text.Trim());
    FormsAuthenticationTicket authTicket=new FormsAuthenticationTicket(1,this.TextBox_username.Text.Trim(),DateTime.Now,DateTime.Now.AddMinutes(20),false,role);
    string encryptedTicket=FormsAuthentication.Encrypt(authTicket);
    HttpCookie authCookie=new HttpCookie(FormsAuthentication.FormsCookieName,encryptedTicket);
    Response.Cookies.Add(authCookie);
    Response.Redirect(FormsAuthentication.GetRedirectUrl(this.TextBox_username.Text.Trim(),false));

3、在global.asax中对Application_AuthenticateRequest事件进行定义

主要是对用户的身份票证进行解密,而后将其加入到用户的http上下文中

protected void Application_AuthenticateRequest(Object sender, EventArgs e)
  {
   string cookiename=FormsAuthentication.FormsCookieName;
   HttpCookie authcookie=Context.Request.Cookies[cookiename];
   if(authcookie==null)
   {
    return;
   }
   FormsAuthenticationTicket authticket=null;
   try
   {
    authticket=FormsAuthentication.Decrypt(authcookie.Value);
   }
   catch(Exception)
   {
    return;
   }
   if(authticket==null)
   {
    return;
   }
   string[] roles=authticket.UserData.Split(new char[]{'|'});
   FormsIdentity id=new FormsIdentity(authticket);
   GenericPrincipal principal=new GenericPrincipal(id,roles);
   Context.User=principal;
  }

4、在你要限制的文件夹中或是在你的代码中加入授权控制

如要对一个文件夹进行授权则在该文件夹中写入一个web.config文件,示例如下

<configuration>   
  <system.web>
    <authorization>
        <allow roles="administrator" />
        <deny users="*"/>         
    </authorization> 
 </system.web>
</configuration>
应该都能看懂吧

或是在代码中加入授权控制

通过检测用户http上下文中的用户名和角色进行控制

HttpContext.Current.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值