在我的控制器类中获取OAuth2AccessToken附加信息

时间:2016-10-21 07:20:47

标签: spring-security

您的情况是我需要在OAuth2AccessToken中存储的其他详细信息才能在我的控制器类中检索。我用过

accessToken.setAdditionalInformation(additionalInformation);

保存数据。如何在控制器类中获取存储在additionalInformation中的数据?

1 个答案:

答案 0 :(得分:1)

我们可以使用HttpServletRequest,通过从Authorization标头获取令牌,然后从令牌存储中获取令牌详细信息。 我的代码的代码段在下面分享。

public TokenData getTokenData(HttpServletRequest request) throws InputInvalidException {
    String methodName = "getTokenData()";
    long startTime = System.currentTimeMillis();
    logger.debug(methodName + ", starts");
    TokenData tokenData = null;
    try {
        String authHeader = request.getHeader("Authorization");
        if (authHeader != null) {
            String tokenValue = authHeader.toLowerCase().replace("bearer", "").trim();
            logger.debug(methodName + ", tokenValue::" + tokenValue);
            OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
            tokenData = (TokenData) accessToken.getAdditionalInformation().get("tokenData");
        }
    } catch (Throwable exception) {
        logger.error(exception);
        throw new InputInvalidException("token invalid");   
    }
    logger.debug(methodName + ", ends" + Constants.DELIMITERS.COMMA + (System.currentTimeMillis() - startTime));
    return tokenData;
}