【MVC5】使用权限+角色
发布日期:2021-10-24 15:11:41 浏览次数:41 分类:技术文章

本文共 1828 字,大约阅读时间需要 6 分钟。

1.在Ticket中设置用户角色

在权限的Ticket中设置用户的角色(这里是逗号分割)。

List
roles = new List
();if (isAdmin) { roles.Add("Admin");} roles.Add("Guest");FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( 1, model.UserId, DateTime.Now, DateTime.Now.AddDays(30), // 设置记住登录的时间(这里是30天) true, String.Join(",", roles)); // 设置用户角色HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, FormsAuthentication.Encrypt(ticket));// 设置cookie的过期时间(这里是50年)cookie.Expires = DateTime.Now.AddYears(50);Response.Cookies.Add(cookie);

2.在Global.asax.cs中添加Application_AuthenticateRequest方法

protected void Application_AuthenticateRequest(object sender, EventArgs e) {    // 取得认证Check的Cookie    HttpCookie cookie = Context.Request.Cookies[FormsAuthentication.FormsCookieName];    if (cookie == null) return;    // 解密    FormsAuthenticationTicket ticket = null;    try {        ticket = FormsAuthentication.Decrypt(cookie.Value);    }    catch (Exception) {        return;    }    if (ticket == null) return;    // 取得ticket.UserData中设定的角色    string[] roles = ticket.UserData.Split(new char[] { ',' });    // From认证中,使用IPrincipal对象中的GenericPrincipal类。    // 该类由表示资格情报的FormsIdentity类和角色信息(string[]对象)组成。    FormsIdentity identity = new FormsIdentity(ticket);    GenericPrincipal principal = new GenericPrincipal(identity, roles);    // 把FormsIdentity赋值到Context.User中    // 可以从Page.User中取得该值    Context.User = principal;}

3.在Controller中使用Authorize特性

// 允许匿名访问[AllowAnonymous]public class HomeController : Controller{    ......}// 只允许登录用户访问[Authorize]public class SampleController : Controller {    ......}// 只允许具有"Admin"角色的用户访问[Authorize(Roles = "Admin")]public class SampleController : Controller {    ......}// 该特性同样可用于Action

参照:

已同步到

转载于:https://www.cnblogs.com/Ryukaka/p/4913678.html

转载地址:https://blog.csdn.net/weixin_30800807/article/details/94944620 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:JavaScript 函数式编程
下一篇:Struts2_Action

发表评论

最新留言

逛到本站,mark一下
[***.202.152.39]2024年04月18日 23时47分15秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

微信公众号介绍_以及注册订阅号---微信公众号开发工作笔记0001 2019-04-26
Vue模板语法---vue工作笔记0003 2019-04-26
Vue计算属性之基本使用---vue工作笔记0004 2019-04-26
Vue监视---vue工作笔记0005 2019-04-26
Vue条件渲染---vue工作笔记0008 2019-04-26
Vue事件处理_vue的事件处理超级方便_功能强大---vue工作笔记0011 2019-04-26
Vue表单数据自动收集---vue工作笔记0012 2019-04-26
Vue生命周期---vue工作笔记0013 2019-04-26
ES6-ES11新特性_ECMAScript_简单介绍---JavaScript_ECMAScript工作笔记001 2019-04-26
ES6-ES11新特性_ECMAScript相关名词介绍_---JavaScript_ECMAScript工作笔记002 2019-04-26
ES6新特性_let变量声明以及声明特性---JavaScript_ECMAScript_ES6-ES11新特性工作笔记003 2019-04-26
Sharding-Sphere,Sharding-JDBC_介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记001 2019-04-26
Sharding-Sphere,Sharding-JDBC_分库分表介绍_Sharding-Sphere,Sharding-JDBC分布式_分库分表工作笔记002 2019-04-26
C++_类和对象_对象特性_构造函数的分类以及调用---C++语言工作笔记041 2019-04-26
C++_类和对象_对象特性_拷贝构造函数调用时机---C++语言工作笔记042 2019-04-26
C++_类和对象_对象特性_构造函数调用规则---C++语言工作笔记043 2019-04-26
C++_类和对象_对象特性_深拷贝与浅拷贝---C++语言工作笔记044 2019-04-26
AndroidStudio_java.util.ConcurrentModificationException---Android原生开发工作笔记237 2019-04-26
AndroidStudio_android中实现对properties文件的读写操作_不把properties文件放在assets文件夹中_支持读写---Android原生开发工作笔记238 2019-04-26
弹框没反应使用Looper解决_the caller should invoke Looper.prepare() and Looper.loop()---Android原生开发工作笔记239 2019-04-26