![JAR search and dependency download from the Maven repository](/logo.png)
me.youm.frame.security.context.CurrentUserContext Maven / Gradle / Ivy
package me.youm.frame.security.context;
import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaTokenInfo;
import cn.dev33.satoken.stp.StpUtil;
import me.youm.frame.common.context.ReactiveRequestContextHolder;
import me.youm.frame.common.entity.TokenInfo;
import me.youm.frame.common.exception.TokenException;
import me.youm.frame.common.utils.SecurityUtil;
import reactor.core.publisher.Mono;
import java.io.Serializable;
/**
* @author youta
*/
public class CurrentUserContext implements Serializable {
private static final String USER_SESSION_ID = "user";
public static SaTokenInfo login(String username) {
StpUtil.login(username);
return StpUtil.getTokenInfo();
}
public static void logout() {
if (StpUtil.isLogin()){
StpUtil.logout();
}
}
public static Mono reactiveUser() {
return ReactiveRequestContextHolder.getExchange()
.map(SecurityUtil::getToken)
.onErrorResume(Mono::error)
.map(StpUtil::getTokenSessionByToken)
.map(CurrentUserContext::tokenSession)
;
}
private static TokenInfo tokenSession(SaSession tokenSession){
TokenInfo model = tokenSession.getModel(USER_SESSION_ID, TokenInfo.class);
if (model == null)
throw new TokenException("Token has expired");
return model;
}
public static void user(TokenInfo user) {
SaSession saSession = StpUtil.getTokenSessionByToken(user.getAccessToken());
saSession.set(USER_SESSION_ID, user);
}
public static TokenInfo refresh(String access_token) {
StpUtil.checkActivityTimeout();
StpUtil.updateLastActivityToNow();
SaSession saSession = StpUtil.getTokenSessionByToken(access_token);
TokenInfo user = saSession.getModel(USER_SESSION_ID, TokenInfo.class);
long timeout = saSession.getTimeout();
user.setExpiresIn(timeout);
saSession.set(USER_SESSION_ID, user);
return user;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy