本地缓存

一些间的使用

@Bean
    public LoadingCache<String, OAuth2Authentication> authenticationLoadingCache() {
        return CacheBuilder.newBuilder().maximumSize(1000L).expireAfterWrite((long)this.oAuth2ClientProperties.getExpireAfterWrite().intValue(), TimeUnit.SECONDS).refreshAfterWrite((long)this.oAuth2ClientProperties.getRefreshAfterWrite().intValue(), TimeUnit.SECONDS).build(new CacheLoader<String, OAuth2Authentication>() {
            public OAuth2Authentication load(String jwtToken) throws Exception {
                ResponseMessage<OAuth2Authentication> responseMessage = OAuth2ClientAutoConfiguration.this.oAuth2ResourceService.getLoginUserByJwt(OAuth2ClientAutoConfiguration.this.oAuth2UtilService.buildJwtQueryParam(jwtToken));
                if (!responseMessage.is2xxSuccessful()) {
                    return null;
                } else {
                    OAuth2Authentication oAuth2Authentication = (OAuth2Authentication)responseMessage.getResult(OAuth2Authentication.class);
                    return oAuth2Authentication;
                }
            }
        });
    }

    @Autowired
    LoadingCache<String, OAuth2Authentication> authenticationLoadingCache;

    if (this.authenticationLoadingCache.getIfPresent(authToken) == null) {
                        ResponseMessage<Object> claims = this.oAuth2AccessTokenService.checkToken(authToken);
                        if ("-1".equals(claims.getCode())) {
                            throw new CommonException(401, claims.getMessage());
                        }
     }

    if (SecurityContextHolder.getContext().getAuthentication() == null || !SecurityContextHolder.getContext().getAuthentication().getCredentials().equals(username)) {
                        OAuth2Authentication oAuth2Authentication = (OAuth2Authentication)this.authenticationLoadingCache.getUnchecked(authToken);
                        AuthUserDetails principal = new AuthUserDetails(oAuth2Authentication);
                        PreAuthenticatedAuthenticationToken auth = new PreAuthenticatedAuthenticationToken(principal, authToken, principal.getAuthorities());
                        SecurityContextHolder.getContext().setAuthentication(auth);
     }
posted @ 2019-07-04 13:11  朝明  阅读(196)  评论(0编辑  收藏  举报