欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ASP.NET Forms身份认证

程序员文章站 2023-11-13 21:16:34
asp.net程序开发,用户根据角色访问对应页面以及功能。 项目结构如下图: 根目录 web.config 代码:

asp.net程序开发,用户根据角色访问对应页面以及功能。

项目结构如下图:

ASP.NET Forms身份认证

根目录 web.config 代码:

<?xml version="1.0" encoding="utf-8"?>
<!--
 有关如何配置 asp.net 应用程序的详细消息,请访问
 http://go.microsoft.com/fwlink/?linkid=169433
 -->
<configuration>
  <system.web>
    <compilation debug="true" targetframework="4.0" />
    <authentication mode="forms">
     <forms loginurl="login.aspx"></forms>
    </authentication>
    <!--<authorization>
     <allow users="*"></allow>
    </authorization>-->
  </system.web>
</configuration>

admin文件夹中 web.config 代码:

<?xml version="1.0"?>
<configuration>
 <system.web>
 <authorization>
 <allow roles="admin" />
 <deny users="*"/>
 </authorization>
 </system.web>
</configuration>

teacher文件夹中 web.config 代码:

<?xml version="1.0"?>
<configuration>
 <system.web>
 <authorization>
 <allow roles="teacher" />
 <deny users="*"/>
 </authorization>
 </system.web>
</configuration>

student文件夹中 web.config 代码:

<?xml version="1.0"?>
<configuration>
 <system.web>
 <authorization>
 <allow roles="student" />
 <deny users="*"/>
 </authorization>
 </system.web>
</configuration>

login.aspx中登录成功后设置cookie,设置cookie代码:

protected void setlogincookie(string username, string roles)
{
system.web.security.formsauthentication.setauthcookie(username, false);
 system.web.security.formsauthenticationticket ticket = new formsauthenticationticket(1, username, datetime.now, datetime.now.adddays(1), false, roles, "/");
 string hashticket = formsauthentication.encrypt(ticket);
 httpcookie usercookie = new httpcookie(formsauthentication.formscookiename, hashticket);
 httpcontext.current.response.setcookie(usercookie);
}

global.asax 中进行身份验证:

protected void application_authenticaterequest(object sender, eventargs e)
{
 httpapplication app = (httpapplication)sender;
 httpcontext ctx = app.context; //获取本次http请求的httpcontext对象 
 if (ctx.user != null)
 {
 if (ctx.request.isauthenticated == true) //验证过的一般用户才能进行角色验证 
 {
 system.web.security.formsidentity fi = (system.web.security.formsidentity)ctx.user.identity;
 system.web.security.formsauthenticationticket ticket = fi.ticket; //取得身份验证票 
 string userdata = ticket.userdata;//从userdata中恢复role信息
 string[] roles = userdata.split(','); //将角色数据转成字符串数组,得到相关的角色信息 
 ctx.user = new system.security.principal.genericprincipal(fi, roles); //这样当前用户就拥有角色信息了
 }
 }
}

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!