标签:localhost 技术 space div strong 用户 border var 登录
本文是通过验证与网上资料整合的,请读者注意。
目录:
1. 什么是Claims-based认证
2.进一步理解Claims-based认证
3.Claims-based的简单demo
1. 什么是Claims-based认证
首先,这种机制并非微软特有的,Claims-based认证和授权在国外被广泛使用,包括微软的ADFS,Google,Facebook等。
Claims-based认证的主要特点:
总的来说就是,我再也不用管你怎么登录,怎么样去拿你有哪些角色了,我只需要把你跳到那个登录站点上,然后它返回给我令牌信息,我从令牌上获取需要的信息来确定你是谁,你拥有什么角色就可以了。
2.进一步理解Claims-based认证
为了让大家进一步理解Claims-based认证,我们从一个普通的登录场景开始说起,拿QQ集成登录来举例。
3.Claims-based的简单demo
1)首先我们创建一个自己的项目,我们这里创建一个MVC项目,名字叫TestIdentity
2)然后我们新建一个DefaultController,代码如下:
[Authorize]是添加整个Controller的权限验证
[Authorize(Roles = "Users")]是添加方法的权限验证
using System.Web.Mvc; namespace TestIdentity.Controllers { [Authorize] public class DefaultController : Controller { [Authorize(Roles = "Users")] public ActionResult D1() { return View(); } [Authorize(Roles = "Managers")] public ActionResult D2() { return View(); } public ActionResult D3() { return View(); } } }
我们启动项目,可以看到:401错误,没有权限(访问所有的方法都没有权限)
3)下面,我们添加Application_AuthenticateRequest方法到Global.asax。
Application_AuthenticateRequest是每次有权限请求时,都会调用。(程序启动时也会调用)
protected void Application_AuthenticateRequest() { var clamis = new List<Claim>(); clamis.Add(new Claim(ClaimTypes.Name, "Alun")); clamis.Add(new Claim(ClaimTypes.Role, "Users")); var identity = new ClaimsIdentity(clamis, "MyLogin"); ClaimsPrincipal principal = new ClaimsPrincipal(identity); //把用户权限添加到User HttpContext.Current.User = principal; }
当我们访问:
http://localhost:50478/Default/D1 可以访问
http://localhost:50478/Default/D2 没有权限,因为权限是Managers
http://localhost:50478/Default/D3 可以访问
简单的介绍到此结束了
标签:localhost 技术 space div strong 用户 border var 登录
原文地址:http://www.cnblogs.com/alunchen/p/6782701.html