点击上方“Thinking曹”,勾选“设为星标”
前言
过去的Web项目开发里,我们使用最多的两种权限框架有Shiro
和Spring Security
,Shiro
轻量级、入门门槛低功能相对也强大;Spring Security
背景强大,功能丰富,入门门槛相对高,配置稍微复杂,由Spring团队开源。而现如今将介绍一款轻量级、功能强大且几乎零配置的sa-token权限框架, sa-token是一个JavaWeb权限认证框架,强大、简单、好用。
一、核心知识
1. 什么是sa-token
sa-token
是一个JavaWeb
权限认证框架,强大、简单、好用
登录验证、权限验证、自定义session会话、踢人下线、持久层扩展、无cookie模式、模拟他人账号、多账号体系、注解式鉴权、Spring集成…
零配置开箱即用,覆盖所有应用场景,你所需要的功能,这里都有
与其它权限认证框架相比,sa-token有以下两点优点:
上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖的功能全部涵盖,不让你用个框架还要自己给框架打各种补丁
2. sa-token 😋
在线文档:http://sa-token.dev33.cn/
3. 框架优点
与其它权限认证框架相比,sa-token
尽力保证两点:
上手简单:能自动化的配置全部自动化,不让你费脑子 功能强大:能涵盖的功能全部涵盖,不让你用个框架还要自己给框架打各种补丁
二、涵盖功能
-
登录验证 -
权限验证 -
自定义session会话 -
踢人下线 -
模拟他人账号 -
持久层扩展(集成redis) -
多账号认证体系(比如一个商城项目的user表和admin表) -
无cookie模式(APP、小程序等前后台分离场景) -
注解式鉴权(优雅的将鉴权与业务代码分离) -
零配置与Spring等框架集成 -
…
三、集成
1. maven依赖
在项目中直接通过 pom.xml
导入 sa-token
的依赖即可
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.4.0</version>
</dependency>
2. 获取源码
-
github地址: https://github.com/click33/sa-token -
gitee地址: https://gitee.com/sz6/sa-token
3. jar包下载
点击下载:sa-token-1.4.0.jar
四、准备工作
本篇将带你从零开始集成sa-token,从而让你快速熟悉sa-token的使用姿势,以maven + springboot为例
五、工程搭建
1. 创建SpringBoot项目
1.2 引入sa-token的依赖
<!-- sa-token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.4.0</version>
</dependency>
2. 引入jar包依赖
-
在 pom.xml 中添加依赖,完整pom如下:
<!-- web应用依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- lombok代码简化工具 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!-- sa-token 权限认证, 在线文档:http://sa-token.dev33.cn/ -->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token</artifactId>
<version>1.4.0</version>
</dependency>
3. 配置文件
-
你可以零配置启动项目 -
但同时你也可以在application.yml中增加如下配置,定制性使用框架:
server:
port: 8070
spring:
# sa-token配置
sa-token:
# token名称(同时也是cookie名称)
token-name: satoken
# token有效期,单位s 默认30天
timeout: 2592000
# 在多人登录同一账号时,是否共享会话(为true时共用一个,为false时新登录挤掉旧登录)
is-share: true
# 是否在cookie读取不到token时,继续从请求header里继续尝试读取
is-read-head: true
# 是否在header读取不到token时,继续从请求题参数里继续尝试读取
is-read-body: true
# 是否在初始化配置时打印版本字符画
is-v: true
-
如果你习惯于 application.properties 类型的配置文件,那也很好办: -
百度:springboot properties与yml 配置文件的区别
4. 创建主类
在项目中新建包 com.pj
,在此包内新建主类 SaTokenDemoApplication.java
,输入以下代码:
@SaTokenSetup // 标注启动 sa-token
@SpringBootApplication
public class SaTokenDemoApplication {
public static void main(String[] args) throws JsonProcessingException {
SpringApplication.run(SaTokenDemoApplication.class, args); // run-->
System.out.println("启动成功:sa-token配置如下:" + SaTokenManager.getConfig());
}
}
5. 运行
运行代码,当你从控制台看到类似下面的内容时,就代表框架已经成功集成了
六、普通spring环境
普通spring
环境与springboot
环境大体无异,只不过需要在项目根目录下手动创建配置文件sa-token.properties
来完成配置即可。
七、sa-token常用API介绍
官方提供了一系列的常用API接口,这里只简单介绍一下登录相关的API接口:http://sa-token.dev33.cn/doc/#/use/login-auth
1. 登录验证
1.1 核心思想
-
所谓登录验证,说白了就是限制某些接口只有登录后才能访问(如:查询我的账号资料) -
如何判断你有没有登录?当然是登录成功后我给你做个标记 -
在需要鉴权的接口里检查标记,有标记者视为已登录,无标记者视为未登录 -
根据以上思路,我们很容易想到以下api:
1.2 具体API
StpUtil.setLoginId(Object loginId)
-
标记当前会话登录的账号id -
建议的参数类型:long | int | String, 不可以传入复杂类型,如:User、Admin等等
StpUtil.logout()
-
当前会话注销登录
StpUtil.isLogin()
-
获取当前会话是否已经登录,返回true=已登录,false=未登录
StpUtil.checkLogin()
-
检验当前会话是否已经登录, 如果未登录,则抛出异常:NotLoginException -
扩展:NotLoginException 对象可通过 getLoginKey() 方法获取具体是哪个 StpLogic 抛出的异常
StpUtil.getLoginId()
获取当前会话登录id, 如果未登录,则抛出异常:NotLoginException 类似API还有:
StpUtil.getLoginIdAsString() 获取当前会话登录id, 并转化为String类型
StpUtil.getLoginIdAsInt() 获取当前会话登录id, 并转化为int类型
StpUtil.getLoginIdAsLong() 获取当前会话登录id, 并转化为long类型
StpUtil.getLoginId(T defaultValue)
-
获取当前会话登录id, 如果未登录,则返回默认值 (defaultValue可以为任意类型) -
类似API还有:
StpUtil.getLoginId_defaultNull() 获取当前会话登录id, 如果未登录,则返回null
getLoginIdByToken(String tokenValue)
-
获取指定token对应的登录id,如果未登录,则返回 null
八、项目测试
1. 启动SpringBoot项目
启动SpringBoot示例项目,控制台打印sa-token信息如下:
九、源码下载
1. 源码
https://github.com/Thinkingcao/SpringBootLearning/sa-token-demo-springboot
2. 参考
官方文档:http://sa-token.dev33.cn/
总结
每一种Java框架在每个不同时期都有对应的优缺点,相比Shiro
、Spring Security
这些权限框架,sa-token显得相对轻量级,因为sa-token仅仅封装了一些常用的登录验证、权限验证、自定义session会话、踢人下线等功能,是一款强大、简单、好用的权限框架。
长按下图二维码,关注公众号「Thinking曹」,在通往Java架构的路上我想与你一同前行,共同进步!
原创不易,如果您觉得文章对你有用,请动动你的小手指,点赞、在看、转发来一波,你的支持就是我创作的最大动力。
原文始发于微信公众号(Thinking曹):手把手教你SpringBoot整合sa-token权限框架
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/26859.html