.net core jwt 入门记录
从百度里搜索里搜索了很多jwt的文章,跟着文章写了一个demo,这里记录下学习过程中碰上的问题。看文章多遍,不如手工实现一次。
模板已上传到github.com:dogvane/webapi_jwt_template
让项目先飞起来
网上的都只是文章和代码片段,github里找的,要么跑不起来(需要配置的其它依赖,数据库等),要么代码结构巨复杂,不知从何改起。
对于demo来说,就只需要2个功能
1.生成jwt的token并返回给前端(AccountController.Login)
2.执行一个需要权限业务方法,并在里面获得用户id(AccountController.DoYourTask)
需要注意的地方:
生成token代码里,如果发行人信息和 startup.cs 里的不一致,是无法验证通过的,特别是当你的代码时分别从2个地方copy的时候(不要问我怎么知道的o(>﹏<)o)。
所以,一个解析jwt信息的网站很重要 在线解析jwt参数 http://jwt.calebb.net/
在做测试时,使用了 swagger 让swagger ui 的请求带头部信息 https://www.cnblogs.com/JacZhu/p/6188968.html
至于为什么要在 BaseController里解析出UserId,大家自己领悟吧。在这里一开始找了很多文章,没一篇是说如何从jwt里解析出数据的,因为脑子没转过来,所以呵呵了很久。
其实,换一个角度想一想就知道了,不需要找什么文章,token从Request里可以获取,jwt的的处理类已经加入系统,只需要翻查一下api就行。所以说,读博百篇,不如动手实现。
加几个关键词,方便有这样搜索需求的同学:.net core jwt Decode userid