ASP.NET MVC 中如何实现基于角色的权限控制

在ASP.NET MVC中,通过使用其所提供的内置

[Authorize ]
public ActionResult Index()

 

标记的方式,可以实现所标记的ACTION必须是认证用户才能访问;

通过使用

[Authorize(Users="username" )]

 

的方式,可以实现所标记的ACTION必须是某个具体的用户才能访问,以上两种方式使用起来非常方便,在NeedDinner示例程序中已有具休的实现过程,

但是,我们在实际的应用中所使用的大都是基于角色(Roles)的认证方式,NeedDinner中却未给出,本文给出具体实现(基于ASP.NET Forms验证)过程:

step 1
在完成UserName和Password认证后,向客户端写入认证Cookie

ExpandedBlockStart.gif 代码

        FormsAuthenticationTicket authTicket 
=   new  FormsAuthenticationTicket(
            
1 ,
            userName,
            DateTime.Now,
            DateTime.Now.AddMinutes(
20 ),
            
false ,
            
" admin " //写入用户角色
            );
        
        
string  encryptedTicket  =  FormsAuthentication.Encrypt(authTicket);
        
        System.Web.HttpCookie authCookie 
=   new  System.Web.HttpCookie(FormsAuthentication.FormsCookieName, encryptedTicket);
        System.Web.HttpContext.Current.Response.Cookies.Add(authCookie);

 


step 2
在Global.asax.cs文件中加入以下代码,用于在用户登陆网站时读取Cookie

 

ExpandedBlockStart.gif 代码
protected   void  Application_AuthenticateRequest(Object sender, EventArgs e)
    {
        HttpCookie authCookie 
=  Context.Request.Cookies[FormsAuthentication.FormsCookieName];
        
if  (authCookie  ==   null   ||  authCookie.Value  ==   "" )
        {
            
return ;
        }
        FormsAuthenticationTicket authTicket 
=   null ;
        
try
        {
            authTicket 
=  FormsAuthentication.Decrypt(authCookie.Value);
        }
        
catch
        {
            
return ;
        }
        
string [] roles  =  authTicket.UserData.Split( new   char [] {  ' ; '  });
         
if  (Context.User  !=   null )
        {
            Context.User 
=   new  System.Security.Principal.GenericPrincipal(Context.User.Identity, roles);
        }
    }

 

 

 

step 3

这样以来,就可以使用实现以下效果

  [Authorize(Roles = " admin " )]
    
public  ActionResult Index( int   ?  page)

 

非常方便!
 

 

转载于:https://www.cnblogs.com/Yinner/archive/2010/02/27/1674667.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
asp.net mvc 通用权限管理系统(响应布局)源码是基于asp.net(C#)MVC+前端bootstrap+ztree+lodash+jquery技术,采用bootstrap为前台开发展示UI,Web Api主要负责前端的逻辑交互,再结合jQuery Ajax+Web Api进行提交数据请求。 框架特色: 1、为了数据方便读写,语言的成熟性,选择asp.net开发效率更高效率更快; 2、系统架构采用:耦合性低、重用性高、部署快、可维护性高等优点的MVC框架进行搭建; 3、系统配置文件数据采用HttpRuntime.Cache进行缓存,使得程序在运行效率更高、速度更快; 4、数据库的选型,根据系统的数据规模与需求方的相关要求,综合多方考量,调研多种数据库后选定mysql为系统数据库; 5、运行环境根据功能模块的特点,选型window server2008+IIS,部署更简洁; 6、使用报表导出开源组件NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作; 7、为了兼容更多的浏览器,让用户界面使用更友好。我们选择了响应式布局框架bootstrap; 8、系统报表我们采用了echarts开源软件,并且我们提供了非常炫酷的图形界面,特色是地图,另外还提供了柱状图、折线图、饼图、气泡图及四象限图等; 9、系统采用bootstrap响应式布局,这样面对不同分辨率设备灵活性强能够快捷解决多设备显示适应问题; 10、系统基于ASP.NET(C#) MVC +web api+Bootstrap +Jquery+ MYSQL前端采用响应式布局对页面兼容性显著提高; 系统优势: 代码可以满足大部分开发者的需求,让开发人员能省不少时间 ASP.NET MVC通用角色权限管理系统源码 更新日志: 2020-03-23 更新如下: 1、新增文件上传功能实例,保证文件能够无误上传保存并下载; 2、优化后台系统框架代码,删除以前大项目其它无用功能; 3、新增页面代码JS、css文件的压缩,使得系统运行速度更快; 4、系统登录页面新增验证校验过程,这样做到输入验证码时时验证; 5、优化系统加载页面提示数据加载功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值