
club.zhcs.lina.auth.service.DefaultAuthService Maven / Gradle / Ivy
package club.zhcs.lina.auth.service;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.TimeUnit;
import javax.annotation.Nonnull;
import org.nutz.lang.Lang;
import org.nutz.lang.Strings;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import club.zhcs.lina.auth.jwt.JWTGenerator;
import jakarta.servlet.http.HttpServletRequest;
import lombok.RequiredArgsConstructor;
/**
*
* @author Kerbores([email protected])
*
*/
@RequiredArgsConstructor
public class DefaultAuthService implements AuthService {
private final JWTGenerator jwtGenerator;
private final HttpServletRequest request;
private final UserDetailService userDetailService;
LoadingCache cache = CacheBuilder.newBuilder()
.concurrencyLevel(8)
.expireAfterAccess(10, TimeUnit.MINUTES)
.initialCapacity(10)
.maximumSize(300)
.recordStats()
.build(new CacheLoader() {
@Override
public AuthUser load(@Nonnull String key) throws Exception {
return userDetailService.userByName(key);
}
});
/**
* @return
* @see club.zhcs.lina.auth.service.auth.AuthService#user()
*/
@Override
public AuthUser user() {
try {
String user = userName();
if (Strings.isBlank(user)) {
return null;
}
return cache.get(user);
}
catch (ExecutionException e) {
throw Lang.wrapThrow(e);
}
}
/**
* @return
* @see club.zhcs.lina.auth.service.auth.AuthService#userName()
*/
@Override
public String userName() {
return jwtGenerator.verifiedSubject(token());
}
/**
* @return
* @see club.zhcs.lina.auth.service.auth.AbstractAuthService#getRequest()
*/
@Override
public HttpServletRequest getRequest() {
return request;
}
@Override
public void login(AuthUser user) {
// do nothing
}
@Override
public void logout() {
// do nothing
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy