当我希望从应用程序中删除用户时,我也想注销该用户(只要他单击任何链接)。我可以通过以下方式清除自己的安全上下文:
SecurityContextHolder.getContext().setAuthentication(null);
但是我应该如何清除他的安全上下文?
最佳答案
SecurityContextHolder.getContext()。setAuthentication(null);将使当前 session 无效。
SecurityContextHolder.getContext()返回一个 session 范围的bean。因此,调用setAuthentication(null)将使当前用户的 session 无效。
因此,只要用户单击链接,他的 session 将失效,您只需从 Controller 调用此函数即可。
当然,您可能不想在所有 Controller 中分散代码来执行此操作。因此,您可以使用过滤器来代替。
在您的过滤器中,您可以保留一个单例bean,其中包含您要失效的所有用户名的列表。然后,您对照列表检查当前 session ,并决定是否使该 session 无效。
关于spring - Spring Security-如何使另一个用户注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11780460/