在.net Core 3.0中使用jwt验证

 

由于工作需要写一个下载文件的api,要求要有jwt token验证,想着正好可以在Core中试试水,下面是整个开发过程;

   由于开始并不懂jwt,在网上找了些相关的资料,对于使用Core api + jwt的文章并不多,这个文章看起来有很多东西:https://www.cnblogs.com/CreateMyself/p/11123023.html,下面是跟着此文章进行的操作,以及自己的一些想法;

 jwt由三部分构成,基本范式是:

  1. {"alg":"HS256","typ":"JWT"}
  2. {"sub":"BY","nbf":1575448305,"exp":1575448905}
  3. 加密串1234567890123456  

详细说明: 

1.第一部分以Base64编码的Header主要包括Token的类型和所使用的算法,我的理解是定义的一个标准模板,基本使用范式即可

2.第二部分以Base64编码的Payload主要包含的是声明(Claims);我的理解是这个地方携带一些用户自定义的信息,但由于jwt的原理(下面会说),第一部分和第二部分使用的加密只是base64的编码转换,不存在加密,所以保存的信息都是次要信息

3.第三部分则是将Key通过对应的加密算法生成签名,最终三部分以点隔开;也就是通过自己的key把上面两部分加密,且这个加密是不可逆的,也就是只会存在前面两部分被修改,或者第三部分被修改,但都会失去自洽性,也就是通过这个验证;

虽然原理说起来简单,但实际操作起来就头大了,下面说下整个过程,

首先,我们先建立一个Core 3.0版的控制台,然后把必要的分层什么的建立起来

基本的分层没什么说的,mvc架构加上连数据库的MongoFactory,定义zip生成和下载方法的Ziphelper,由于不是本节重点,此处不做演示;(tokenHlper请忽略)

下面我们开始考虑加上jwt验证,都知道现在在vs里搞东西第一步就是去拿Nuget包,支持jwt的需要这两个包

System.IdentityModel.Tokens.Jwt和Microsoft.AspNetCore.Authentication.JwtBearer

然后我们需要生成jwt的token

在这我直接在 zipHelper里面写了个GetToken的方法:

public string GetToken()
        {
            var claims = new Claim[]
           {
                new Claim(JwtRegi

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值