Spring Security中的“主要”是什么?

我是Spring和Spring Security的新手。 我正在阅读关于Spring Security的内容,它出现了principal的概念,它应该是当前登录的用户。 但是,如果我们有多个当前登录用户怎么办? 所以,我的问题是,那么春季安全的主要内容到底是什么?

我已阅读本教程的示例:

http://www.mkyong.com/spring-security/get-current-logged-in-username-in-spring-security/

他们似乎考虑到只有一个当前登录的用户,而事实并非如此。

如何检索特定用户? 我如何区分正在进行请求的用户?

主体当前登录的用户。 但是,您通过绑定到当前线程的安全上下文检索它,因此它也绑定到当前请求及其会话。

SecurityContextHolder.getContext()通过ThreadLocal变量在内部获取当前的SecurityContext实现。 因为请求绑定到单个线程,所以这将获得当前请求的上下文。

为了简化,您可以说安全上下文在会话中并包含用户/主体和角色/权限。

如何检索特定用户?

你没有。 所有API都旨在允许访问当前请求的用户和会话。 让用户A成为100个当前经过身份validation的用户之一。 如果A对您的服务器发出请求,它将分配一个线程来处理该请求。 然后,如果您执行SecurityContextHolder.getContext().getAuthentication() ,则在此线程的上下文中执行此操作。 默认情况下,在该线程内,您无权访问由不同线程处理的用户B的上下文。

我如何区分正在进行请求的用户?

你没必要,这就是Servlet容器为你做的。