登录实现代码
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
import java.util.HashMap;
import java.util.Map;
@Service
public class UPersonServiceImpl extends ServiceImpl<UPersonMapper, UPerson> implements UPersonService {
@Override
public String login(String username, String password) {
// 查询用户
UPerson user = this.findByLoginIdentifier(username);
if (user == null) {
throw new BusinessException(ResultCode.USER_NOT_FOUND);
}
// 验证密码
if (!BCrypt.checkpw(password, user.getEncodedPassword())) {
throw new BusinessException(ResultCode.PASSWORD_ERROR);
}
// 创建登录额外信息
SaLoginModel loginModel = new SaLoginModel();
loginModel.setExtra("username", user.getUsername())
.setExtra("nickname", user.getNickName())
.setExtra("firstName", user.getFirstName())
.setExtra("lastName", user.getLastName())
.setExtra("scopes", Collections.singletonList("USER"));
// 登录并生成token
StpUtil.login(user.getId(), loginModel);
// 返回token
return StpUtil.getTokenValue();
}
}
Sa-Token 配置
sa-token:
# token名称
token-name: Authorization
# token有效期(单位:秒)
timeout: 86400
# token临时有效期
activity-timeout: -1
# 是否允许同一账号并发登录
is-concurrent: true
# 在多人登录同一账号时,是否共用一个token
is-share: false
# token风格
token-style: uuid
实现特点
- 使用 Sa-Token 原生功能
- 支持存储额外信息
- 可以通过
StpUtil.getExtra()获取存储的信息 - 自动管理 token 的生命周期
依赖要求
implementation 'cn.dev33:sa-token-spring-boot3-starter:1.40.0'
您可以将这个内容保存为 sa-token-login.md 文件。
Sa-Token JWT 配置说明
配置文件
在 application.yml 中添加以下配置:
sa-token:
# token名称
token-name: Authorization
# token有效期(单位:秒)
timeout: 86400
# 是否允许同一账号并发登录
is-concurrent: true
# 在多人登录同一账号时,是否共用一个token
is-share: false
# token风格
token-style: random-32
# 配置jwt秘钥
jwt-secret-key: your-secret-key-here
# 使用jwt模式
token-type: jwt
关键配置说明
JWT 相关
jwt-secret-key: JWT 加密密钥token-type: jwt: 指定使用 JWT 模式
Token 配置
timeout: token 有效期,单位秒token-style: token 风格is-concurrent: 是否允许同一账号并发登录is-share: 是否共用 token
使用效果
配置完成后,StpUtil.getTokenValue() 将返回 JWT 格式的 token。
1万+

被折叠的 条评论
为什么被折叠?



