feat: 解耦认证逻辑
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user