Spring Security - 如何使另一个用户注销登录?

3

当我希望从我的应用程序中删除一个用户时,我还想要注销他(在他点击任何链接时立即注销)。我可以通过以下方式清除自己的安全上下文:

SecurityContextHolder.getContext().setAuthentication(null);

但是我该如何清除他的安全上下文?

1
https://dev59.com/9Goy5IYBdhLWcg3wieq6 - Boris Treukhov
1个回答

1

SecurityContextHolder.getContext().setAuthentication(null);会使当前会话失效。

SecurityContextHolder.getContext()返回一个会话作用域的bean。因此,调用setAuthentication(null)将使当前用户的会话失效。

所以,当用户单击链接时,您可以从控制器中调用此函数,以使其会话失效。

当然,您可能不想在所有控制器中散布代码来执行此操作。那么,您可以使用过滤器来代替。

在您的过滤器中,您可以保留一个具有要使其无效的所有用户名列表的单例bean。然后,您检查当前会话是否与该列表匹配,并决定是否使其失效。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接