springboot,Antd-admin集成sa-token登录认证

575 阅读2分钟

SA-TOKEN

之前编写登录都是使用spring security,始终都没有太搞明白他的内在逻辑是怎么调用的,基本都是按照官方例子来进行的集成。后续了解到sa-token 框架,集成了登录认证权限认证单点登录OAuth2.0分布式Session会话微服务网关鉴权等功能。感觉功能真心强大,基本上常规的逻辑都进行封装,调用也比较简单,目前只是初步尝试登录认证功能,后续同步也会集成单点登录功能,权限认证。

登录整体需要配合前端使用,前端使用的是阿里开发的antd-admin框架,权限等都进行了简单开发。

Springboot侧

SA-TOKEN登录

StpUtil.login(localAccount.loginName) 非常简单,将登录名称作为key值调用sa-token中的login即可,由于采用的前后端分离,同步需要返回用户的权限,token。从SA-TOKEN中获取tokenValue返回到前端,前端通过获取到token调用后台请求时将token携带到请求heander中。

image.png

application.yml中的配置参数


sa-token:

# token名称 (同时也是cookie名称)

token-name: x-token

# token有效期,单位s 默认30天, -1代表永不过期

timeout: 2592000

# token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒

activity-timeout: 100

# 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)

is-concurrent: true

# 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)

is-share: false

# token风格

token-style: uuid

# 是否输出操作日志

is-log: false

is-read-head: true

is-read-cooking: false

由于是无会话状态,所以需要禁用从cooking中获取token,改为从head中获取token。测试阶段我的token有效期设置为100s进行测试。 activity-timeout: 100 来进行配置

前端【Antd-Admin】

Login 【登录】 -- Login.vue

image.png

拿到后台的返回后设置账户,权限,token。

请求设置 -- request.js

设置上述值后,需要同步将token设置到localStorage中

image.png 登录后的每次请求都需要将token设置到请求heander中

image.png

全局拦截 -- axio-interceptors.js

image.png

从localStorage中获取token,判断token是否存在并进行跳登录判断。

简单集成后,基本完成了页面的登录,菜单权限,token判断等功能。实现非常简单,基本只需要几行代码就可以搞定登录认证功能。

后续待完成功能

前端

  • token不存在跳登录
  • token过期后,进行状态码的判断跳登录

后端

  • 全局拦截token通过StpUtil.checkLogin()来进行token返回状态码
  • 内存判断改为redis判断,通过SA-TOKEN的配置来进行处理
  • 全局异常处理,返回不同的消息错误