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

在Hibernate中更新后如何重新加载Spring Security Principal?

史修谨
2023-03-14
问题内容

这肯定是一个普遍的问题…而且我觉得在使用Google搜索和SOing之后,我肯定只是没有彻底地环顾四周以获得足够的答案,或者没有人问过这个问题…所以请原谅我。

我正在使用Spring Security和Hibernate等

因此,用户/主要用户已登录并对其个人资料进行了一些更改。

我使用DAO更新配置html" target="_blank">文件(UserDetails),并且希望我的Principal自动反映此更新。

但是,当我再次获得Principal时,会得到脏版本(从我的初始登录名开始)。

有谁知道我如何才能从Hibernate重新加载更新的UserDetails来获取Spring Security?


问题答案:

OK挖了一下,终于找到了答案。

我们可以创建一个UsernamePasswordAuthenticationToken并将更新的Principal分配给上下文。

Authentication authentication = new UsernamePasswordAuthenticationToken(userObject, userObject.getPassword(), userObject.getAuthorities());
SecurityContextHolder.getContext().setAuthentication(authentication);


 类似资料:
  • 我在我的应用程序中使用导航栏,每次我选择一个项目时,它都会加载一个片段。 我能够使用相同的文本字段和按钮保存片段的状态,但有一个片段可以加载地图、添加标记、集群并执行。 每次我转到另一个菜单项并返回时,它都会重新加载所有内容,例如AsyncTask、Cluster、Markers。我如何停止此片段以不再重新创建地图并在返回时保存状态: Udate 1:我更新了代码,但问题仍然存在 主要活动: 主片

  • 问题内容: 我正在尝试实现一些功能,即单击屏幕上的按钮将导致我的[QuerydataTable刷新(因为自创建dataTable以来服务器端数据源可能已更改)。 这是我所拥有的: 但是当我运行它时,它什么也没做。单击按钮时刷新dataTable的正确方法是什么?提前致谢! 问题答案: 您可以尝试以下方法:

  • 问题内容: 我正在使用Java进行项目,因此需要在单击特定按钮后重新加载整个程序。这该怎么做? 问题答案: 尝试 如果仍然无法使用,请在完成上述步骤后尝试

  • 问题内容: 如果我导入的模块定义了属于同一个包的同名类,则由于父包的__init__.py,它将作为类而不是模块导入。有关详细信息,请在不同目录中查看不同的导入结果。在Python Shell或ipython Shell中,如果我这样做 MyModule始终作为Class导入,因此我无法重新加载它(reload()仅适用于模块)。跑 再次似乎不更新类定义。有人可以建议一种在python shell

  • 我用的是ChromeDriver。这是我用来设置超时的代码。 这是连接到URL的代码。 这段代码位于一个for循环中,该循环迭代URL字符串列表。一旦“skip”设置为真,它对该网页不做任何操作,并在循环的下一次迭代中连接到下一个URL。 我想做的是,当一个网页挂起(卡在无限负载中)时,我想捕获TimeoutException,跳过该网页并连接到循环中的下一个URL。 但一旦捕获到TimeoutE

  • 我有一个用户名列表,用户名列表根据用户输入的数量而增加。问题是,当用户输入用户名时,列表会被输入填充,只有当我的页面重新加载时,我的页面才会更新。这是我迄今为止尝试过的代码。 我无法在外页重新加载的情况下更新数据。请建议我如何更新ui:在外页重新加载的情况下重复数据。提前谢谢。