使用saToken快速实现用户登录
前言:在此之前,没有听说过saToken,在看了官方文档后,发现saToken框架做了大量的封装,这样使得学习和使用都很方便,以下是使用saToken快速实现用户登录的方式,适合刚接触saToken的小白入手。。。
1,配置:
①maven坐标
<!--satoken-->
<dependency>
<groupId>cn.dev33</groupId>
<artifactId>sa-token-spring-boot-starter</artifactId>
<version>1.37.0</version>
</dependency>
②配置文件
sa-token:
# token 名称(同时也是 cookie 名称)
token-name: satoken
# token 有效期(单位:秒) 默认30天,-1 代表永久有效
timeout: 2592000
# token 最低活跃频率(单位:秒),如果 token 超过此时间没有访问系统就会被冻结,默认-1 代表不限制,永不冻结
active-timeout: -1
# 是否允许同一账号多地同时登录 (为 true 时允许一起登录, 为 false 时新登录挤掉旧登录)
is-concurrent: true
# 在多人登录同一账号时,是否共用一个 token (为 true 时所有登录共用一个 token, 为 false 时每次登录新建一个 token)
is-share: true
# token 风格(默认可取值:uuid、simple-uuid、random-32、random-64、random-128、tik)
token-style: uuid
# 是否输出操作日志
is-log: true
2,举例:
①登录:在调用saToken的登录方法login()时可以指定登录的标识
@PostMapping("/login")
public String login(String name,String password){
//使用用户id作为登录标识
StpUtil.login(1111); //1111应该是数据库中查到的结果
//这个登录标识只能在当前方法中可以获取到
int userId = StpUtil.getLoginIdAsInt();
return String.valueOf(userId);
}
②会话存储:之前使用的是JWT实现的登录,然后使用的ThreadLocal存储的数据;在saToken中,是通过当前会话Session存储数据的。
//2,会话存储
StpUtil.getSession().set("userId",2222);
//获取存储的数据
StpUtil.getSession().get("userId");
注意:这是简单的会话存储数据,如果想要严格保证数据安全性,可以学习saToken的官方文档。使用Session会话存储数据,数据有效期就是Session的有效时长,默认超时时间是30分钟。
③获取token:在登录之后,可能会需要token的值;
//3,获取token
String token = StpUtil.getSession().getToken();
3,总结:
以上就是开发中经常使用的几个api,当然saToken的强大之处不仅仅就这么一点,想要深入学习saToken还得在实际项目中使用。不过,以上几个api对于刚入门的小白来说已经够用了。