开始 authent qq 登录 以及 cati mage lob use
本文是通过验证与网上资料整合的,请读者注意。
目录:
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()
- {
- varclamis =newList();
- clamis.Add(newClaim(ClaimTypes.Name,"Alun"));
- clamis.Add(newClaim(ClaimTypes.Role,"Users"));
- varidentity =newClaimsIdentity(clamis,"MyLogin");
- ClaimsPrincipal principal =new ClaimsPrincipal(identity);
- //把用户权限添加到UserHttpContext.Current.User = principal;
- }
当我们访问:
http://localhost:50478/Default/D1 可以访问
http://localhost:50478/Default/D2 没有权限,因为权限是 Managers
http://localhost:50478/Default/D3 可以访问
简单的介绍到此结束了
C# Claims-based(基于声明)的认证
来源: http://www.bubuko.com/infodetail-2045217.html