SpringBoot+SpringSecurity+JWT+Redis实现认证授权 整体思路: 基于汇客CRM项目

流程图

 登录流程:

前端提交用户名和密码到后端接口方法中,被 spring security 拦截,需要进行用户认证,首先将用户名和密码通过

AuthenticationManager 接口中的 authenticate 方法封装成一个 Authentication 对象 

但是Authentication是一个接口,要用Authentication 的实现类 UsernamePasswordAuthenticationToken 传入用户名和密码参数封装成 Authentication 对象。

然后调用LoadUsername方法取查询用户,因为默认查询的是缓存当中的用户对象,因为我们要去数据库中查询,所以要自己实现 UserDetails 接口重写LoadUsername方法查询用户对象,根据用户名查询对象,如果对象为空,return null,如果查询到对象数据,先将前端传过来的密码进行加密,再与当前用户对象的密码进行比对,默认的加密方式BCryptPasswordEncoder)

认证成功后,将用户对象和权限信息集合一起封装到自己创建的 LoginUser 中(要实现UserDetails 接口)返回回去

通过当前用户去查询数据库 权限关系表 用户表(id) ---角色表 ----菜单表

 最后将用户对象 变成 jwt 加密 , 将Token  顺便 放到 redis 中, 返回给前端的UUID 

过滤器流程:

1.     判断 请求头上有没有token 的uuid

没有 ----return

有 ----通过 token 的uuid 去查看 redis 中的token

2.     Token 进行解析,获取body 那部分信息

3.     Session 的数据共享-----将用户对象信息 放到 spring security 的一个本地线程当中SecurityContextHolder

整体思路:

用户输入用户名密码点击登录,前端将请求发送到后端的请求接口,首先被过滤器拦截,判断请求头上有没有携带token的uuid,如果没有,抛出异常,如果有,通过uuid来获取token,然后对token’进行解析,获取body的信息,为了实现后续所有请求的数据共享,将当前用户信息存储到pring security 的一个本地线程当中SecurityContextHolder中

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于SpringBoot2、MyBatisPlus、Spring Security5.7、JWTRedis的开发框架可以提供以下功能和优势: 1. Spring Boot2是一个轻量级的Java开发框架,能够快速构建Web应用程序和微服务。它提供了自动配置和约定大于配置的设计理念,减少了开发的复杂性。 2. MyBatisPlus是一个在MyBatis基础上进行扩展的ORM框架,提供了更简洁、更便捷的数据库访问方式。它支持代码生成、自动SQL映射、分页查询等功能,能够进一步提高开发效率。 3. Spring Security5.7是一个基于Spring的身份认证授权框架,可以进行用户认证、角色授权、API权限控制等。它提供了一套完整的解决方案,保护应用程序免受各种安全威胁。 4. JWT(Json Web Token)是一种用于跨网络进行身份验证的开放标准。它使用JSON对象作为令牌,可以在客户端和服务器之间传递信息。JWT具有无状态、可扩展、跨平台等特点,适用于分布式系统和移动应用程序。 5. Redis是一种高性能的键值存储系统,它支持数据持久化、集群模式、发布订阅等功能。在开发过程中,可以使用Redis存储JWT令牌、缓存数据等,提高系统的性能和可扩展性。 综上所述,基于SpringBoot2、MyBatisPlus、Spring Security5.7、JWTRedis的开发框架具有快速开发、高效数据库访问、可靠的安全保护和可扩展的分布式支持等优势。它可以帮助开发者快速构建稳定、安全、高性能的Web应用程序和微服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值