JWT学习文章:
第一篇:JWT原理
第二篇:JWT原理实现代码
第三篇:在asp.net core中使用JWT
上一篇学习了JWT的基本理论,这一篇将根据原理进行代码实现。
要想实现jwt的加密解密,要先生成一个SecurityKey,大家可以在网上工具生成一个随机的密钥。我是在这里生成的。
下面篇幅大量都是代码,因为注释写得很清楚,因此就不再有过多文字说明。
Value2接口标记了Auth特性,在下面验证时有Auth特性标记的接口才会被要求token。
注意一定要把这句话添加在UseRouting()之后,因为在扩展方法中获取Auth特性只有在注册了Routing规则后才能获取到值。
访问无需权限的Value1接口:
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TPn5UNJR0TzkkeNBDOsJGcohVYsR2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL5ADO0MDO1ATM1IzMwEjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
访问成功!!!
获取token:
我启用了swagger,如果没有启用在postman中请求https://localhost:5001/Auth?userName=admin&pwd=admin也是一样的。
代码中用户名和密码我只是简单的验证了下是否为空,所以这里填写什么都能通过。
获取token成功说明获取token的代码没有问题,逻辑有没有问题还不能确定,所以要经过后面接口的确认看是否成功。
访问要求权限验证的Value2接口:
不带token:
访问失败!!!
带上token:
成功!!!
静待三十分钟(代码中设置token过期时间为三十分钟),调用Value2接口:
失败了!!!错误提示是token过期。
如果觉得不保险,还可以逐步调试看一下是否所有逻辑都正确执行,这里就不再进行赘述了。
至此证明我们依照jwt原理写的权限验证成功!!!
源码地址:https://gitee.com/jingboweilanGO/Demo_jwt_core.git
说明:Demo-jwt-core2是本篇文章涉及到的源码,是使用asp.net core 自带的jwt方法;
Demo-jwt-core是第三篇jwt文章的源码,在asp.net core中的使用JWT。
如果觉得不错,可以推荐收藏一下,让我也更有动力。