【MVC5】使用权限+角色
1.在Ticket中设置用户角色
在权限的Ticket中设置用户的角色(这里是逗号分割)。
List<string> roles = new List<string>(); 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
参照:http://www.atmarkit.co.jp/ait/articles/0307/26/news002_2.html
【MVC5】使用权限+角色的更多相关文章
- Oracle命令:授权-收回权限-角色
Oracle命令:授权-收回权限-角色 oracle grant 不论授予何种权限,每条授权(grant)语句总是由三部分组成: 1) 接受者部分是准备获得权限的一个或多个用户的列表. 2)关键字权限 ...
- 转 oracle 学习- 用户权限角色
创建和删除用户是Oracle用户管理中的常见操作,但这其中隐含了Oracle数据库系统的系统权限与对象权限方面的知识.掌握还Oracle用户的授权操作和原理,可以有效提升我们的工作效率. Oracle ...
- Spring整合Shiro 权限 角色 用户关系分析
Spring整合Shiro 权限 角色 用户关系分析 作者 : Stanley 罗昊 [转载请注明出处和署名,谢谢!] 前置内容 之前我们学习了,使用注解的方式去完成权限的控制,当然,也是静态的,也就 ...
- SAP Basis DEBUG改表数据权限角色设计
SAP Basis DEBUG改表数据权限角色设计 项目实践中,因种种原因不得不要通过debug才能解决一些特定的问题,所以就涉及到了debug权限角色的定义了. DEBUG的权限,无非就是: 1)数 ...
- oracle数据字典-权限-角色
每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统sch ...
- oracle10 权限角色
管理权限和角色 介绍 这一部分我们主要看看oracle中如何管理权限和角色,权限和角色的区别在那里. 当刚刚建立用户时,用户没有任何权限,也不能执行任何操作,oracle数据库会自动创建一个方案, ...
- [每日一题] OCP1z0-047 :2013-07-25 权限――角色与对象权限
有疑问可以去itpub讨论:http://www.itpub.net/thread-1804842-1-1.html 按题意,操作如下: 1.创建一个角色r1 sys@OCM> create r ...
- oracle数据字典-权限-角色-参数
每个数据库都提供了各自的数据字典的方案,虽然形式不同,但是目的和作用是一样的,比如在mysql里数据字典是在information_schema 里表现的,sqlserver则是在sys这个系统sch ...
- sql 2008 权限角色控制
Use Test --创建角色 create role rtt create user username for login username --将用户TestUser添加到TestRole角色中 ...
随机推荐
- 【leetcode】371. Sum of Two Integers
题目描述: Calculate the sum of two integers a and b, but you are not allowed to use the operator + and - ...
- ZOJ 3495 Lego Bricks
计算几何,暴力. 题目中有一句话:$The$ $mass$ $of$ $each$ $brick$ $is$ $equally$ $distributed$ $and$ $it$ $will$ $be ...
- 使用Spring JdbcTemplate实现CLOB和BLOB的存取
概述 本文讲述通过Spring的JdbcTemplate来读写数据库大字段的实现方案,在一位网友的一篇博客的基础上,查看api文档整理而成. 写实现 JdbcTemplate jdbcTemplate ...
- BZOJ 4873 寿司餐厅(最大权闭合图 网络流)
寿司餐厅 时间限制: 1 Sec 内存限制: 512 MB提交: 6 解决: 3[提交][状态][讨论版] 题目描述 Kiana 最近喜欢到一家非常美味的寿司餐厅用餐.每天晚上,这家餐厅都会按顺序 ...
- 【BZOJ 1027】 (凸包+floyd求最小环)
[题意] 某公司加工一种由铁.铝.锡组成的合金.他们的工作很简单.首先进口一些铁铝锡合金原材料,不同种类的原材料中铁铝锡的比重不同.然后,将每种原材料取出一定量,经过融解.混合,得到新的合金.新的合金 ...
- js知识-进阶
1 DOM 1.1 查找标签 (1)直接查找 document.getElementById(“idname”) // dom对象 document.getElementsByTag ...
- Codeforces Round #344 (Div. 2) C. Report 其他
C. Report 题目连接: http://www.codeforces.com/contest/631/problem/C Description Each month Blake gets th ...
- storm性能优化
Storm 性能优化 目录 场景假设 调优步骤和方法 Storm 的部分特性 Storm 并行度 Storm 消息机制 Storm UI 解析 性能优化 场景假设 在介绍 Storm 的性能调优方法之 ...
- 新浪微博(t.sina)简单授权代码及API测试
http://www.eoeandroid.com/thread-53701-1-1.html package mobson.weiboku.view; import java.util.ArrayL ...
- HDU 4417 Super Mario(划分树)
Super Mario Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...