当我希望从我的应用程序中删除一个用户时,我还想要注销他(在他点击任何链接时立即注销)。我可以通过以下方式清除自己的安全上下文:
SecurityContextHolder.getContext().setAuthentication(null);
但是我该如何清除他的安全上下文?
当我希望从我的应用程序中删除一个用户时,我还想要注销他(在他点击任何链接时立即注销)。我可以通过以下方式清除自己的安全上下文:
SecurityContextHolder.getContext().setAuthentication(null);
SecurityContextHolder.getContext().setAuthentication(null);会使当前会话失效。
SecurityContextHolder.getContext()返回一个会话作用域的bean。因此,调用setAuthentication(null)将使当前用户的会话失效。
所以,当用户单击链接时,您可以从控制器中调用此函数,以使其会话失效。
当然,您可能不想在所有控制器中散布代码来执行此操作。那么,您可以使用过滤器来代替。
在您的过滤器中,您可以保留一个具有要使其无效的所有用户名列表的单例bean。然后,您检查当前会话是否与该列表匹配,并决定是否使其失效。