51 lines
1.3 KiB
Java
51 lines
1.3 KiB
Java
package com.webgame.webgamebackend.common.auth;
|
|
|
|
import cn.dev33.satoken.stp.StpUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Component;
|
|
|
|
/**
|
|
* Sa-Token 认证提供者实现
|
|
* <p>
|
|
* 将 Sa-Token 的 StpUtil 静态方法封装为 AuthenticationProvider 接口,
|
|
* 是项目中唯一直接依赖 Sa-Token 的业务代码之外的文件。
|
|
*/
|
|
@Slf4j
|
|
@Component
|
|
public class SaTokenAuthenticationProvider implements AuthenticationProvider {
|
|
|
|
@Override
|
|
public String login(Object userId) {
|
|
StpUtil.login(userId);
|
|
String token = StpUtil.getTokenValue();
|
|
log.debug("用户登录成功: userId={}", userId);
|
|
return token;
|
|
}
|
|
|
|
@Override
|
|
public void logout() {
|
|
StpUtil.logout();
|
|
}
|
|
|
|
@Override
|
|
public String getCurrentUserId() {
|
|
return StpUtil.getLoginIdAsString();
|
|
}
|
|
|
|
@Override
|
|
public String getUserIdByToken(String token) {
|
|
Object loginId = StpUtil.getLoginIdByToken(token);
|
|
return loginId != null ? loginId.toString() : null;
|
|
}
|
|
|
|
@Override
|
|
public String getCurrentToken() {
|
|
return StpUtil.getTokenValue();
|
|
}
|
|
|
|
@Override
|
|
public void setContextToken(String token, int timeout) {
|
|
StpUtil.setTokenValue(token, timeout);
|
|
}
|
|
}
|