我尝试对REST服务进行自己的基于令牌的授权。这是我的令牌服务:
@Component
public class TokenService {
...
private Set<Token> tokens;
private SecureRandom random;
...
public TokenService() {
this.tokens = new HashSet<Token>();
this.random = new SecureRandom();
}
public boolean has(final String token) {
clear();
Token tokenStub = new Token(token);
return this.tokens.contains(tokenStub);
}
public boolean remove(final String token) {
Token tokenStub = new Token(token);
return this.tokens.remove(tokenStub);
}
public Token retrieve(final TokenDetails tokenDetails) {
clear();
Token token = this.get(tokenDetails);
if (token == null) {
return gen(tokenDetails);
}
token.setDate(System.currentTimeMillis());
token.setTokenDetails(tokenDetails);
return token;
}
... //other methods
}
我是Spring Boot的新手,我了解Spring Security,但是我想提供自己的安全服务。有什么方法可以使Spring Boot的@Component类成为线程安全的吗?
最佳答案
您只需要确保设置的线程安全即可。您可以使用ConcurrentSkipListSet代替HashSet使其成为线程安全的。