gpt4 book ai didi

java - 使用Spring Security登录后如何做?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:09:06 24 4
gpt4 key购买 nike

我有一个 Spring Web 应用程序,它使用 Spring SAML 和 Spring Security 来管理登录过程。现在我需要在正确登录后执行一些任务。特别是我必须在 SecurityContext.getContext() 对象中存储一些数据。

我从未使用过 Spring Security/SAML,我不知道它如何管理来自 IdP 的返回。

在登录过程正确结束后,代码中是否有任何地方通常可以放置您的代码?

我的意思是,我知道重定向页面的设置位置,但我无法将我的自定义代码放入此重定向页面的 Controller 中,因为该页面被多次访问,我只需要在登录时运行我的自定义代码一次时间。

最佳答案

最好的方法是实现接口(interface) SAMLUserDetailsS​​ervice,它会自动存储你从它的 loadUserBySAML 方法返回的对象到你创建的 Authentication 对象中稍后可以从 SecurityContext.getContext() 查询。每次认证后都会调用一次该接口(interface)。参见 the manual有关详细信息和示例。

另一种可能性是AuthenticationSuccessHandler。登录过程调用 onAuthenticationSuccess 方法,该方法可以访问 Authentication 对象,该对象将存储在 SecurityContext.getContext() 中。

只需创建您自己的实现接口(interface)AuthenticationSuccessHandler 的类(您还可以扩展一些现有的类,例如SimpleUrlAuthenticationSuccessHandlerAbstractAuthenticationTargetUrlRequestHandler) .然后通过更改现有 successRedirectHandler bean 中的类,将您的实现插入 securityContext.xml

问题是,Authentication 对象往往是不可变的 - 因此第一种方法可能更好。

关于java - 使用Spring Security登录后如何做?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28903188/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com