ShenNiusModularity项目源码学习(5:jwt身份认证)

发布于:2025-02-10 ⋅ 阅读:(37) ⋅ 点赞:(0)

  ShenNiusModularity项目如果直接启动ShenNius.Admin.Hosting项目,则是以支持前后端分离的WebApi形式启动。启动时读取的是ShenNius.Admin.Hosting项目的appsettings.json配置,同时调用ShenNius.Admin.API项目中的ShenniusAdminApiModule类注册及启用服务。
  ShenNius.Admin.API项目的Jwt文件夹的JwtSetting类对应appsettings.json的JwtSetting节,主要包括是否启动JWT、签名key、发行人、受众、过期时间等。

在这里插入图片描述
  ShenniusAdminApiModule.OnConfigureServices函数内根据JwtSetting中的是否启动JWT设置以配置身份认证方式。如果启用JWT方式,则调用ShenNius.Admin.API.Jwt.Extension. AuthorizationExtension.AddAuthorizationSetup函数注册JwtBearer服务,同时还设置了JWT Token验证异常时的事件处理函数,基本和之前学习JwtBear的使用方式及参数设置方式类似。

在这里插入图片描述
在这里插入图片描述

  ShenNius.Admin.API项目的Jwt文件夹的JwtHelper类用于根据登录用户信息生成对应的Token数据,Token中包括用户的账号、id、角色、联系方式等信息,同时还将发行人、受众、过期时间等数据写入有效负载(注册jwt服务器设置了要验证这些数据),最后采用HmacSha256算法调用JwtSecurityTokenHandler类创建Token。
  前后端分离模式下,前端调用ShenNius.Admin.API项目的UserController.SignIn函数登录系统,用户信息验证成功后调用JwtHelper.GetJwtToken函数生成Token,并作为返回结果的一部分返回给前端。
  ShenNius.Admin.API项目的访问控制并不是用的Authorize特性标识方式,而是使用自定义过滤器特性类(AuthorityAttribute)的方式控制访问权限,待学习后再记录。

参考文献:
[1]https://gitee.com/shenniu_code_group/shen-nius.-modularity
[2]https://blog.csdn.net/dawfwafaew/article/details/142580074


网站公告

今日签到

点亮在社区的每一天
去签到