gpt4 book ai didi

java - 在 CustomLogoutSuccessHandler 中,身份验证对象始终为 null

转载 作者:行者123 更新时间:2023-12-04 08:19:02 28 4
gpt4 key购买 nike

我的自定义 logoutSuccesshandler 中的 Authentication 对象总是为空,我不确定是什么问题。 :(

这是 spring-security 文件:

    <sec:http auto-config="true" entry-point-ref="ssoProcessingFilterEntryPoint"
access-decision-manager-ref="affirmativeBased">
<sec:intercept-url pattern="/afterAuthn/**" access="${spring.security.role}" />
<sec:intercept-url pattern="/tenancy/**" access="${spring.security.role}" />
<!-- Add permissions to specific URLS - i.e. IAM.User.Read for /resources/** -->
<sec:intercept-url pattern="/**"
access="${default.permission}" />
<sec:logout invalidate-session="true" delete-cookies="true"
success-handler-ref="customLogoutSuccessHandler" />
<sec:custom-filter ref="ssoAuthenticationFilter"
position="PRE_AUTH_FILTER" />
<sec:session-management>
<sec:concurrency-control max-sessions="1" />
</sec:session-management>
</sec:http>
..
<bean id="customLogoutSuccessHandler"
class="usermgmt.service.CustomLogoutSuccessHandler">
<property name="defaultLogoutSuccessUrl" value="${service.provider.logout.success.url}"/>
</bean>

我的自定义类处理程序:
public class CustomLogoutSuccessHandler implements LogoutSuccessHandler {
@Override
public void onLogoutSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
throws IOException, ServletException {
if (authentication == null) {
System.out.println("NULL");
} else {
System.out.println("NOT NULL");
}
}}

在这里,身份验证始终为 NULL,Spring 安全版本为 3.1.0.RELEASE

最佳答案

这可能是因为您在 spring security 中配置了 SecurityContextLogoutHandler。 SecurityContextLogoutHandler 清除安全上下文从而清除认证对象。您的自定义处理程序在 SecurityContextLogoutHandler 之后调用。为了保留身份验证对象,您必须创建自定义 SecurityContextLogoutHandler 并在那里拥有必要的逻辑。

在本类(class)中,您有 2 个选择:

  • 您可以将身份验证对象放在可以在自定义注销成功处理程序中检索的请求属性中
  • 或者在您的自定义 SecurityContextLogoutHandler 中计算 URL 并将其设置为请求属性在您的自定义注销成功处理程序中检索它并设置为默认目标 URL
  • 关于java - 在 CustomLogoutSuccessHandler 中,身份验证对象始终为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35037174/

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