Sa-Token 登录实现与配置

登录实现代码

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

实现特点

  1. 使用 Sa-Token 原生功能
  2. 支持存储额外信息
  3. 可以通过 StpUtil.getExtra() 获取存储的信息
  4. 自动管理 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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值