如何集成 Spring Security 和 JWT,

关键问题:

  1. 如何集成 Spring Security 和 JWT,并实现用户认证和授权?

SpringSecurity核心是一组过滤器链,JWT是生成token的机制

代码操作:

关于jwt:

1.yml配置中加入jwt配置信息

2.JWT token的JwtUtils.java--生成.---校验token函数

  1. 如何定义和实现用户角色和权限的管理策略?

设计3个表,角色表--用户表---权限表

介绍一下 RBAC 模型:基于角色的访问控制,具体来说:一个用户可以拥有多个角色,每个角色又可以被分配多个权限,就构成"用户-角色-权限"的授权模型

ABAC模型:基于属性的访问控制,不仅基于用户角色,还基于其他属性,就会更灵活和复杂。

权限系统是工作中常用的功能,职责分明,提高效率

采用JWT作为令牌机制,实现用户无状态登录。

  1. 在设计用户、角色、菜单之间的权限关系时,你是如何考虑权限的细粒度控制的?是否支持动态权限分配和实时生效?

需要考虑角色定义:用户被分配一个或多个角色,从而间接获得相应权限。

考虑前端操作:通过按钮元素,在界面允许管理员动态分配权限,然后触发后端服务,实时更新到数据库

考虑日志:用户的权限变更了需要记录,以便审计和监控。

  1. 在使用Spring Security和JWT进行用户认证与授权时,你是如何结合JWT的无状态性和Spring Security的会话管理来实现权限校验的?

  1. Redis在系统中主要用来缓存哪些数据?

    存JWT的token,

  2. 在项目实施过程中,你遇到了哪些技术挑战?是如何解决的?有哪些经验教训可以分享?

  • 怎么实现jwt无状态登录和Security的会话管理 ,涉及到Spring Security与JWT的集成,,做很多配置文件,考虑JWT的生成、验证和刷新机制,安全框架的自定义的认证过滤器、Token存储方案和权限访问,我是通过去搜索相关文章和阅读官方文档解决,获得的经验是了解框架工作原理和流程能显著提高开发效率。

MySQL数据库优化:

使用连接(JOIN)代替子查询、选择最合适的字段属性、使用索引优化查询、优化表结构

额外知识:

jwt无状态:

对外提供的是rest风格的接口,rest风格的规范是:服务的无状态性。

受rest风格的影响

即:服务器不保存任何客户端的请求信息、所以客户端每次请求必须带有自描述信息,通过这些信息识别客户端身份。这就是为什么用api请求的时候要带密钥的原因。

流程:

  1. 客户端第一次登录时,服务端进行信息认证

  2. 认证通过,就会将对用户信息加密形成token,返回给客户端,作为凭证

  3. 以后每次请求,客户端都会带认证的token

  4. 服务端对token解密,判断是否有效。

Spring Security的会话管理

认证通过后,会有一个对象与当前线程绑定,将用户信息保存到Session,避免每次操作都认证。

后端学习路线

https://zhuanlan.zhihu.com/p/667409263

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值