.NET 黑魔法 - asp.net core 身份认证 - Policy
身份认证几乎是每个项目都要集成的功能,在面向接口(Microservice)的系统中,我们需要有跨平台,多终端支持等特性的认证机制,基于token的认证方式无疑是最好的方案。今天我们就来介绍下在.Net Core版本中如何做一个自己的身份认证系统。
首先,本篇文章介绍的方式是基于Policy。
我们希望有一个这样的方式来给Controller或Action添加身份认证,将它灵活的添加到我们需要的地方:

请注意高亮的那行代码,我们希望有这样一个Filter,加上它就为这个Action添加了身份认证,Policy可以指定想要的那个认证方式,这里演示一个名为Bearer的策略。

这里代码我们的代码功能分3个部分:
1,将Request Header里的Authorization字段取出并序列化为Administrator对象。
2,判断user的账号密码是否和注入的一致,若一致,添加一个ClaimsPrincipal,mvcContext.HttpContext.User = principal;就是将Request用户赋值给User对象,这样我们在Action里就能以this.User的方式优雅的获取当前登录信息。
3,context.Succeed(requirement); context.Fail();这2行代码就标识请求是否通过了身份验证。
关于微软ClaimsPrincipal系统,我将会在另外一篇文章介绍。
最后,要让我们的BearerTokenHandler起作用,要在Startup里面配置一下:

别忘了在Configure方法里使app使用身份认证:
app.UseAuthentication();
这里IAuthorizationHandler是.Net Core里负责身份认证的接口,我们要实现这个接口以注入我们需要的逻辑。
注意图3里的AddPolicy()方法里,参数值必须和我们Action里调用的一致,否则.Net会找不到我们的策略。另外,在认证系统中,我们需要登录接口,这个接口返回一个token字符串便可,我相信这个对各位来说都没什么难的。
至此,一个完整的基于token的身份认证机制就做完了,示例代码包含了一些黑魔法,请无视无关代码。
.NET 黑魔法 - asp.net core 身份认证 - Policy的更多相关文章
- 深入解读 ASP.NET Core 身份认证过程
长话短说:上文我们讲了 ASP.NET Core 基于声明的访问控制到底是什么鬼? 今天我们乘胜追击:聊一聊ASP.NET Core 中的身份验证. 身份验证是确定用户身份的过程. 授权是确定用户是否 ...
- asp.net core 身份认证/权限管理系统简介及简单案例
如今的网站大多数都离不开账号注册及用户管理,而这些功能就是通常说的身份验证.这些常见功能微软都为我们做了封装,我们只要利用.net core提供的一些工具就可以很方便的搭建适用于大部分应用的权限管理系 ...
- ASP.NET Core 身份认证 (Identity、Authentication)
Authentication和Authorization 每每说到身份验证.认证的时候,总不免说提及一下这2个词.他们的看起来非常的相似,但实际上他们是不一样的. Authentication想要说明 ...
- ASP.NET Core身份识别
Introduction to Identity 66 of 93 people found this helpful By Pranav Rastogi, Rick Anderson, Tom Dy ...
- ASP.NET Core Token认证
翻译:Token Authentication in ASP.NET Core 令牌认证(Token Authentication)已经成为单页应用(SPA)和移动应用事实上的标准.即使是传统的B/S ...
- 细说ASP.NET Forms身份认证
阅读目录 开始 ASP.NET身份认证基础 ASP.NET身份认证过程 如何实现登录与注销 保护受限制的页面 登录页不能正常显示的问题 认识Forms身份认证 理解Forms身份认证 实现自定义的身份 ...
- 简单的ASP.NET Forms身份认证
读了几篇牛人的此方面的文章,自己也动手做了一下,就想有必要总结一下.当然我的文章质量自然不能与人家相比,只是写给从没有接触过这个知识点的朋友. 网站的身份认证我以前只知道session,偶然发现一些牛 ...
- IE11下ASP.NET Forms身份认证无法保存Cookie的问题
IE11下ASP.NET Forms身份认证无法保存Cookie的问题 折腾了三四天,今天才找到资料,解决了. 以下会转贴,还没来得及深究,先放着,有空再学习下. ASP.NET中使用Forms身份认 ...
- 关于Asp.Net Forms身份认证
Asp.Net管道式的构建个我们提供了通过IHttpMoudle来订阅管线事件来达到干预HTTP请求的目的,Asp.Net的身份认证正是通过此种方式来对请求来执行身份认证的,这篇文章仅仅谈论Forms ...
随机推荐
- linux进程状态D
运行在KVM虚拟机里的一些进程突然出了问题,这些出了问题的进程无法用kill杀掉,使用ps可以看到这些进程处于D状态: [build@kbuild-john ~]$ ps -a -ubuild -o ...
- char是所有类型中最短的 char多为8位,
https://en.wikipedia.org/wiki/C_data_typesIn practice, char is usually eight bits in size and short ...
- [development][dpdk][hugepage] 大页内存的挂载
参考: [development][dpdk][hugepage] 为不同的结点分配不同大小的大页内存 完成了以上内容之后, 下一步需要做的是挂载, 大页内存只有被挂载了之后,才能被应用程序使用. 挂 ...
- 什么是渲染目标(render target)&& 渲染到纹理(Render To Texture, RTT)详解
渲染到纹理(Render To Texture, RTT)详解 RTT是现在很多特效里面都会用到的一项很基本的技术,实现起来很简单,也很重要.但是让人不解的是网上搜索了半天只找到很少的文章说这个事儿, ...
- dhttp与IdCookieManager处理登陆过程
dhttp与IdCookieManager处理登陆过程 我们知道,用IE注册网页(象论坛)时,它能够自动找出相应的Cookie并提交给服务器,从而使用户不用重新登录就能够看到与他自己帐号有关的内容.这 ...
- TZOJ:最大连续子序列
描述 给定K个整数的序列{ N1, N2, ..., NK },其任意连续子序列可表示为{ Ni, Ni+1, ..., Nj },其中 1 <= i <= j <= K.最大连续子 ...
- Ubuntu 远程挂载windows的分区
1.首先需要将windows需要挂载的分区设置为共享 2.在Ubuntu终端输入如下命令: sudo mount -t cifs -o username=***,password=*** //172. ...
- ReentrantLock可重入锁的原理及使用场景
摘要 从使用场景的角度出发来介绍对ReentrantLock的使用,相对来说容易理解一些. 场景1:如果已加锁,则不再重复加锁 a.忽略重复加锁.b.用在界面交互时点击执行较长时间请求操作时,防止多次 ...
- OpenFace的一些了解
1.OpenFace内4个样例代码 配置学习了两个 其一: Ubantu 基本命令 Docker 安装方式.发布网站方式.查看验证安装结果命令 Openface 基本demo 实现方式.和基本原理 其 ...
- IE无法安装Activex控件
由于无法验证发行者,所以windows已经阻止此软件,如要安装未签名的activex控件,按如下步骤: 1.打开Internet Explorer---菜单栏点“工具”---Internet选项--安 ...