本文介绍了Spring安全OAuth2-身份验证后使会话无效的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我们正在使用Spring安全OAuth2保护REST服务。应用程序可以调用/oauth/authorize
、/oauth/token
或/rest-api
终结点。令牌和REST-API端点是无状态的,不需要会话。
是否可以在用户通过身份验证后使会话无效?如果是这样的话,最好的方法是什么?我们希望用户在调用/oauth/authorize
时始终登录。当前,只要存在会话,对/oauth/authorize
的调用就跳过身份验证。
推荐答案
据我所知,您正尝试在执行了某些操作后以编程方式注销。也许您应该研究一下SecurityContextLogoutHandler,看看它是如何工作的。有一种方法可以从那里注销。我认为把它称为建议会解决你的问题。
public void logout(HttpServletRequest request, HttpServletResponse response, Authentication authentication) {
Assert.notNull(request, "HttpServletRequest required");
if (invalidateHttpSession) {
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
}
}
SecurityContextHolder.clearContext();
}
这篇关于Spring安全OAuth2-身份验证后使会话无效的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!