但愿给你3-5分钟的碎片化学习,多是坐地铁、等公交,聚沙成塔,水滴石穿,码字辛苦,若是你吃了蛋以为味道不错,但愿点个赞,谢谢关注。html
咱们先看下传统Web端的认证流程:git
以上流程很简单,有过mvc开发经验的都了如指掌,一图胜千言就不展开介绍了,下面简单演示一下实现:github
首先咱们新建一个mvc项目api
咱们在AdminController.cs里增长[Authorize]浏览器
在Startup.cs中restful
这时候咱们访问https://localhost:5001/Admin/Index后台会跳转到Account/Loginmvc
因此咱们要先登录一下:https://localhost:5001/account/login,模拟登录,最后再访问Admin/Index就成功了,以下图:学习
整个过程,我录个视频看下:编码
Cookie-Based认证不是咱们这篇文章的重点,接下来咱们来看下JWT(JSON Web Token)认证,关于这个认证网上资料也很是多。这里有Catcher有篇不错的文章参考,这里还有一个JWT的官网值得关注和简书是的参考(跳转)。加密
相对以往的文章,我会吸其精华整理后变成我系列的一部分,我知道重复是危险的,可是不去整理,彷佛离系统化仍是有那么一点点距离。因此我写的这篇不是重复造轮子,我会尽量站在您的角度,考虑阅读的舒服性,理解的便捷性。也许你会以为简单粗暴,一看就懂,那就有那么点意义。其实我以为技术文章其实也能够不用长篇大论,重点是要能把简单的道理用深刻浅出的方式让你们快速接受。
JWT通常用在基于RESTful API的移动端、Web端、其余端等多个终端的联合认证。和Cookie-Based认证最大的不一样是,他不须要手动来重定向,API只返回标准的HTTP Code,具体有哪些Code,咱们能够查看阮一峰大哥的RESTful API设计指南和RESTful API最佳实践。这里扯远了,咱们看下图流程,基本就知道JWT的机制了。
关于JWT咱们掌握它的Header、Payload、Signature三段部分就差很少了,以下图所示:
咱们看到左边的Token的是怎么来的,右边的SIGNATURE通过多重加密进行拼接,其中HEADER和PAYLOAD进行了BASE64位加密,而后+256位的Secret,外层再用SHA256进行加密。
接下来咱们编码来实现这个认证:
1) 首先咱们新建JSON配置和对应的实体映射。
2)在Starup.cs当中,咱们须要引入类库
using Microsoft.AspNetCore.Authentication.JwtBearer; using Microsoft.IdentityModel.Tokens; using System.Text;
3)同时在Starup.cs中,经过Bind方法进行配置和实体的绑定,而后配置JWT相关参数。以下图所示:
4)最后别忘记配置权限管道
5)咱们再看看加和不加Authorize的浏览器返回的区别,以下图所示:
以上代码大部分是截图,截图看起来更加顺眼,虽然不方便复制,若是你想看完整代码能够访问个人GitHub地址
但愿以上分享对你有帮助,我是IT人张飞洪,入行10年有余,人不堪其忧,吾不改其乐,谢谢您关注。