当前位置: 首页 > 知识库问答 >
问题:

以编程方式使用不同的Spring Security权限重新登录用户

弘伟彦
2023-03-14

PreReq:
用户登录并被赋予使用userService的自定义实现从数据库中获得的角色。即

身份验证提供商用户服务ref=“securityPolicyService”

调用已实现的方法loadUserByUsername,并为用户加载他们登录的特定俱乐部的角色,默认情况下第一次加载。

然后,用户点击与UI不同的俱乐部,我调用服务上的一个方法,该方法获取该俱乐部的新权限列表。

然后我执行以下操作:

Object principle = SecurityContextHolder.getContext().getAuthentication().getPrincipal();
SecureMember sm = (SecureMember) principle;
Authentication auth = 
      new UsernamePasswordAuthenticationToken(sm, null, newAuthories); <br><br>
    SecurityContextHolder.getContext().setAuthentication(auth);<br>
request.getSession(false).invalidate();

SecureMember从SpringFramework扩展了用户。

问题是,会员机构从未更新过新的机构。

谢谢加里

共有1个答案

孙夕
2023-03-14

如果HttpSession为null并且在请求期间被无效,Spring Security不会存储安全上下文,因此如果您在会话无效后设置上下文(并且不创建新会话),那么它将不会被存储。

如果是这种情况,您应该会看到此日志消息(并且已启用调试日志记录)。

创建一个新会话,或者不要使原来的会话无效。

 类似资料:
  • 问题内容: 相反:如何使用Spring Security手动注销用户? 在我的应用程序中,我 注册了一个新用户屏幕 ,该 屏幕 发布到一个控制器中,该控制器在db中创建一个新用户(并进行了一些明显的检查)。然后我希望这个新用户自动登录…我有点想要某种东西像这样 : 编辑 好吧,我几乎已经基于如何使用Spring Security3.1以编程方式登录用户的答案实现了 但是,部署后,jsp无法访问my

  • 我正在创建一个使用Spring security进行身份验证的Spring MVC web应用程序。 谢谢!

  • 问题内容: 我正在尝试编写一个可以自动登录Facebook的Java程序。 到目前为止,我已经获得了下面的代码,可以将主页html页面下载到String中,但是不知道如何发送电子邮件和密码来登录Facebook?Java程序还需要处理返回的Cookie才能保持登录状态吗? } 更新: 我已经使用htmlUnit尝试了以下代码,但是出现以下异常: 有人知道为什么吗? 问题答案: 您应该看一下HTML

  • 问题内容: 我想在注册过程结束后立即登录用户,而无需通过登录表单。 这可能吗 ?我已经找到了的解决方案,但是我没有在我实际从事的项目中使用它。 这是我的security.yml,我正在使用两个防火墙。纯文本编码器仅用于测试。 问题答案: 是的,您可以通过类似于以下内容的方式执行此操作: 当您在上下文中设置令牌时,最后不会自动触发事件,而通常在使用登录表单或类似方法时触发。因此,将其包含在此处的原因

  • 本文向大家介绍Springboot+SpringSecurity+JWT实现用户登录和权限认证示例,包括了Springboot+SpringSecurity+JWT实现用户登录和权限认证示例的使用技巧和注意事项,需要的朋友参考一下 如今,互联网项目对于安全的要求越来越严格,这就是对后端开发提出了更多的要求,目前比较成熟的几种大家比较熟悉的模式,像RBAC 基于角色权限的验证,shiro框架专门用于

  • 我希望我的应用程序允许拥有Facebook,Google,Amazon等帐户的用户能够登录到我的应用程序。这通过AWS Cognito运行良好。 但是,如果用户没有任何登录,应用程序是否可以通过编程方式创建用户登录? > 我不需要实现自己的身份验证机制,也不用担心密码是如何存储的。 根据我的研究,我认为现有的身份验证提供商甚至其他服务(如OpenID)都无法做到这一点。 如果我不想实现自己的登录存