当前位置: 首页 > 面试题库 >

如何获得通过Web安全性登录的所有用户的列表(通过Spring Security)

祁通
2023-03-14
问题内容

我在Web应用程序中使用Spring Security,现在我想获得一个已登录程序的所有用户的列表。

我如何访问该列表?他们不是已经在Spring框架中保留了什么吗?像SecurityContextHolder或SecurityContextRepository吗?


问题答案:

要访问所有已登录用户的列表,需要将SessionRegistry实例注入到bean中。

@Autowired
@Qualifier(“sessionRegistry”)
private SessionRegistry sessionRegistry;
然后使用注入的SessionRegistry你可以访问所有主体的列表:


List<Object> principals = sessionRegistry.getAllPrincipals();

List<String> usersNamesList = new ArrayList<String>();

for (Object principal: principals) {
    if (principal instanceof User) {
        usersNamesList.add(((User) principal).getUsername());
    }
}

但是在注入会话注册表之前,你需要在spring-security.xml中定义会话管理部分(请参阅Spring Security参考文档中的“ 会话管理”部分),并在并发控制部分中,应为会话注册表对象设置别名(session-registry-别名),你将通过它注入。

    <security:http access-denied-page="/error403.jsp" use-expressions="true" auto-config="false">
        <security:session-management session-fixation-protection="migrateSession" session-authentication-error-url="/login.jsp?authFailed=true"> 
            <security:concurrency-control max-sessions="1" error-if-maximum-exceeded="true" expired-url="/login.html" session-registry-alias="sessionRegistry"/>
        </security:session-management>

    ...
    </security:http>


 类似资料:
  • 我试图写一个代码,其中我传递我现有的用户ID和密码,并希望当我执行代码时,它应该询问我的用户ID和密码,然后授权我访问主页。我试图这样做,但到目前为止,它要求用户ID和密码,并在输入凭据后,它向我显示登录(html)页面。 包装试验; /*错误作为实现java.lang.runnable.run*/ @覆盖公共无效运行(){

  • 问题内容: 你可以在模板方面知道当前用户是否已通过身份验证: 但是我没有找到获取经过身份验证的用户列表的方法。 问题答案: 与rz的答案一起,你可以查询未到期的会话模型,然后将会话数据转换为用户。一旦知道了,就可以将其转换为模板标记,该标记可以在任何给定页面上呈现列表。 (这都是未经测试的,但希望将接近工作)。 提取所有已登录的用户… 使用此功能,你可以制作一个简单的包含模板标签… 然后,你可以在

  • 我有这样的桌子结构 学生 主题 马克斯 要求是,列出所有通过考试的学生( 不知道要添加什么,如果条件 预期产出

  • 嗨,我正在尝试对我的登录页面进行Microsoft单点登录身份验证。为此,我已经使用它创建了Azure多租户目录,并根据给定的链接https://www.c-sharpconer.com/article/azure-ad-authentication-for-mvc-web-application/创建了带有重定向URI的应用程序。成功地集成了代码,当运行时,我在输入用户名和密码后,我在错误下面得

  • 我遵循了parse的教程,并根据他们的指导方针配置了我的FB开发人员帐户以及所需的包名和哈希键。在权限,我已经要求用户配置文件和电子邮件id,所以我应该得到他们的脸书id,全名,性别和电子邮件id作为脸书dcumentation。 我正在返回这个JSON。性别和电子邮件id不是以null值作为键的事件。当然,我已经覆盖了我的FB id。{“名称”:“Varun Agarwal”,“ID”:“111

  • 我正在开发一个Android项目,该项目必须与受SSO Shibboleth身份验证保护的网站强烈交互。因此,我必须创建一个Java类,以便做出有效的SAML断言并登录网站。 我在谷歌上搜索了很多,我发现这段代码:http://blog.keksrolle.de/2010/07/27/how-to-create-a-valid-saml-2-0-assertion-with-opensaml-fo