我尝试对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使其成为线程安全的。

08-05 22:01