当我想注销时,调用以下代码:
request.getSession().invalidate();
SecurityContextHolder.getContext().setAuthentication(null);
但是之后(在使用旧的oauth token 的下一个请求中)我调用
SecurityContextHolder.getContext().getAuthentication();
我在那里看到我的老用户。
如何解决?
最佳答案
这是我的实现(Spring OAuth2):
@Controller
public class OAuthController {
@Autowired
private TokenStore tokenStore;
@RequestMapping(value = "/oauth/revoke-token", method = RequestMethod.GET)
@ResponseStatus(HttpStatus.OK)
public void logout(HttpServletRequest request) {
String authHeader = request.getHeader("Authorization");
if (authHeader != null) {
String tokenValue = authHeader.replace("Bearer", "").trim();
OAuth2AccessToken accessToken = tokenStore.readAccessToken(tokenValue);
tokenStore.removeAccessToken(accessToken);
}
}
}
供测试用:
curl -X GET -H "Authorization: Bearer $TOKEN" http://localhost:8080/backend/oauth/revoke-token
关于java - Spring 安全。如何注销用户(撤消oauth2 token ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21987589/