当我希望从我的应用程序中删除用户时,我也想要将他注销(只要他点击任何链接)。我可以通过以下方式清除自己的安全上下文:
SecurityContextHolder.getContext().setAuthentication(null);
但我应该如何清除他的安全背景?
答案 0 :(得分:1)
SecurityContextHolder.getContext()。setAuthentication(null); 将使当前会话无效。
SecurityContextHolder.getContext()返回一个会话范围的bean。因此,调用setAuthentication(null)将使当前用户的会话无效。
因此,当用户点击链接时,你可以从控制器中调用它,并且他的会话将被无效。
当然,您可能不希望通过所有控制器分散代码来执行此操作。那么您可以使用过滤器来代替。
在您的过滤器中,您可以保留一个单例bean,其中包含您要使其无效的所有用户名的列表。然后根据列表检查当前会话并决定是否无效。