SpringBoot简单接入Sa-Token

简介: 目前市面上比较火的Java安全框架有Spring全家桶系列的`SpringSecurity`,还有Apache的`Shiro`,当然我今天要介绍的不是这两个权限认证框架,而是一个新的比较小型的权限框架,他更多的是作为一个权限认证工具存在,它就是Sa-Token。
日常开发中,不仅仅是业务逻辑需要重视,同时一个好的软件的产生,权限设计也是至关重要的一环。

目前市面上比较火的Java安全框架有Spring全家桶系列的SpringSecurity,还有Apache的Shiro,当然我今天要介绍的不是这两个权限认证框架,而是一个新的比较小型的权限框架,他更多的是作为一个权限认证工具存在,它就是Sa-Token。

Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。这个呢,是Sa-Token官网自己的介绍,而我对他的介绍则是它是一个比SpringSecurity、Shiro更加轻量级的权限认证框架,虽然没有SpringSecurity更加体系成熟化,但是现在也越来越多的开发者开始尝试这个安全框架,我今天也借此来简单的介绍一下并用SpringBoot接入这个小而精的安全框架。

Sa-Token 目前主要五大功能模块:登录认证、权限认证、单点登录、OAuth2.0、微服务鉴权。

  • 登录认证 —— 单端登录、多端登录、同端互斥登录、七天内免登录
  • 权限认证 —— 权限认证、角色认证、会话二级认证
  • Session会话 —— 全端共享Session、单端独享Session、自定义Session
  • 踢人下线 —— 根据账号id踢人下线、根据Token值踢人下线
  • 账号封禁 —— 登录封禁、按照业务分类封禁、按照处罚阶梯封禁
  • 持久层扩展 —— 可集成Redis、Memcached等专业缓存中间件,重启数据不丢失
  • 分布式会话 —— 提供jwt集成、共享数据中心两种分布式会话方案
  • 微服务网关鉴权 —— 适配Gateway、ShenYu、Zuul等常见网关的路由拦截认证
  • 单点登录 —— 内置三种单点登录模式:无论是否跨域、是否共享Redis,都可以搞定
  • OAuth2.0认证 —— 轻松搭建 OAuth2.0 服务,支持openid模式
  • 二级认证 —— 在已登录的基础上再次认证,保证安全性
  • Basic认证 —— 一行代码接入 Http Basic 认证
  • 独立Redis —— 将权限缓存与业务缓存分离
  • 临时Token认证 —— 解决短时间的Token授权问题
  • 模拟他人账号 —— 实时操作任意用户状态数据
  • 临时身份切换 —— 将会话身份临时切换为其它账号
  • 前后端分离 —— APP、小程序等不支持Cookie的终端
  • 同端互斥登录 —— 像QQ一样手机电脑同时在线,但是两个手机上互斥登录
  • 多账号认证体系 —— 比如一个商城项目的user表和admin表分开鉴权
  • Token风格定制 —— 内置六种Token风格,还可:自定义Token生成策略、自定义Token前缀
  • 注解式鉴权 —— 优雅的将鉴权与业务代码分离
  • 路由拦截式鉴权 —— 根据路由拦截鉴权,可适配restful模式
  • 自动续签 —— 提供两种Token过期策略,灵活搭配使用,还可自动续签
  • 会话治理 —— 提供方便灵活的会话查询接口
  • 记住我模式 —— 适配记住我模式,重启浏览器免验证
  • 密码加密 —— 提供密码加密模块,可快速MD5、SHA1、SHA256、AES、RSA加密
  • 全局侦听器 —— 在用户登陆、注销、被踢下线等关键性操作时进行一些AOP操作
  • 开箱即用 —— 提供SpringMVC、WebFlux等常见web框架starter集成包,真正的开箱即用

image.png

下面我就带大家一起来在SpringBoot项目中接入Sa-Token吧,接入还是比较容易的,就这点而言,它的易上手程度就显示是那么的珍贵了,相对于其他两个安全框架来说,更加的简单。

1.导入依赖
<!-- Sa-Token 权限认证,在线文档:https://sa-token.cc -->
<dependency>
    <groupId>cn.dev33</groupId>
    <artifactId>sa-token-spring-boot-starter</artifactId>
    <version>1.34.0</version>
</dependency>
2.yml基础配置
server:
    # 端口
    port: 8081
############## Sa-Token 配置 (文档: https://sa-token.cc) ##############
sa-token: 
    # token名称 (同时也是cookie名称)
    token-name: satoken
    # token有效期,单位s 默认30天, -1代表永不过期 
    timeout: 2592000
    # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
    activity-timeout: -1
    # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录) 
    is-concurrent: true
    # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token) 
    is-share: true
    # token风格
    token-style: uuid
    # 是否输出操作日志 
    is-log: false
3.接口中直接使用

这个是官网的例子,这个还是相对而言比较好理解的。

@RestController
@RequestMapping("/user/")
public class UserController {

    // 测试登录,浏览器访问: http://localhost:8081/user/doLogin?username=zhang&password=123456
    @RequestMapping("doLogin")
    public String doLogin(String username, String password) {
        // 此处仅作模拟示例,真实项目需要从数据库中查询数据进行比对 
        if("zhang".equals(username) && "123456".equals(password)) {
            StpUtil.login(10001);
            return "登录成功";
        }
        return "登录失败";
    }

    // 查询登录状态,浏览器访问: http://localhost:8081/user/isLogin
    @RequestMapping("isLogin")
    public String isLogin() {
        return "当前会话是否登录:" + StpUtil.isLogin();
    }

}
4.运行结果

image.png

image.png

5.总结

这只是Sa-Token的一个简单接入,它也不仅仅只是这些东西,后续还有还有会一些更深入的实践给大家介绍,敬请期待吧。

目录
相关文章
|
6月前
|
Java 数据安全/隐私保护
springcloud配置中心config的加解密
springcloud配置中心config的加解密
165 0
|
NoSQL Java 数据库连接
mall :sa-token项目源码解析
mall :sa-token项目源码解析
117 3
|
Java 容器
Emqx配置HTTP鉴权集成springboot
Emqx配置HTTP鉴权集成springboot
696 0
|
缓存 安全 NoSQL
SpringBoot 如何使用 Sa-Token 完成权限认证?
SpringBoot 如何使用 Sa-Token 完成权限认证?
334 0
|
存储 缓存 前端开发
SpringBoot集成Sa-Token进行鉴权
SpringBoot集成Sa-Token进行鉴权
|
监控 安全 数据可视化
SpringBoot Admin 实现Actuator端点可视化监控(开启认证)
SpringBoot Admin 实现Actuator端点可视化监控(开启认证)
643 0
Spring-security-oauth2 源码分析 登陆流程 /oauth/check_token (二)
Spring-security-oauth2 源码分析 登陆流程 /oauth/check_token (二)
Spring-security-oauth2 源码分析 登陆流程 /oauth/check_token (二)
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
Spring-security-oauth2 源码分析 登陆流程 /oauth/token (一)
|
NoSQL Redis 数据安全/隐私保护
SpringBoot使用token简单鉴权
本文使用SpringBoot结合Redis进行简单的token鉴权。 1.简介 刚刚换了公司,所以最近有些忙碌,所以一直没有什么产出,最近朋友问我登录相关的,所以这里先写一篇简单使用token鉴权的文章,后续会补充一些高阶的,所以如果感觉这篇文章简单,可以直接绕行,言归正传,现在一般系统都进行了前后端分离,为了保证一定的安全性,现在很流行使用token来进行会话的验证,一般流程如下: 用户登录请求登录接口时,验证用户名密码等,验证成功会返回给前端一个token,这个token就是之后鉴权的唯一凭证。
2917 0
|
存储 JSON 前端开发
SpringBoot业务开发 09、Springboot集成token认证(一)
SpringBoot业务开发 09、Springboot集成token认证(一)
SpringBoot业务开发 09、Springboot集成token认证(一)