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

标签 java spring spring-security spring-saml

我有一个 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/

相关文章:

java - 无法将 java.lang.String 类型的属性值转换为属性 Phone 所需的 long 类型;嵌套的异常

authentication - Grails 3-springSecurity重新认证和SessionRegistry

java - 在 actionPerformed 方法中重构 JFrame

java - Java 中的泛型如何适用于以下程序?

java - 在 Spring MVC 中处理 JWT 异常

grails - 了解SpringSecurity ACL中的createacl?

grails - Spring Security Grails插件授权

java.lang.IllegalArgumentException : The region 'eu-west-2' is not a valid region

java - 将多个 Spring MVC 应用程序映射到根 Servlet

java - Spring-data-couchbase - 运行非临时参数化查询