gpt4 book ai didi

spring - 如何处理 AJAX 请求中的 session 超时?

转载 作者:行者123 更新时间:2023-12-02 05:01:03 24 4
gpt4 key购买 nike

我正在使用 Spring-Security 和 Primefaces 作为 View 。 session 超时后如何将用户重定向到登录页面?我有一个 Tabview 和里面的几个选项卡。所以我需要处理 ajax 请求中的 session 超时。有什么解决办法吗?

Spring-security.xml文件

<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/security
http://www.springframework.org/schema/security/spring-security-3.1.xsd">



<http auto-config='true' use-expressions="true">
<intercept-url pattern="/login" access="permitAll"/>
<intercept-url pattern="/pages/*" access="hasRole('admin')" />
<intercept-url pattern="/j_spring_security_check" access="permitAll"/>
<logout logout-success-url="/login.xhtml" />
<form-login login-page="/login.xhtml"
login-processing-url="/j_spring_security_check"
default-target-url="/pages/index.xhtml"
always-use-default-target="true"
authentication-failure-url="/login.xhtml"/>
</http>


<!--Authentication Manager Details -->
<authentication-manager alias="authenticationManager">
<authentication-provider user-service-ref="customUserDetailsService">
<!-- <password-encoder hash="md5"/>-->
</authentication-provider>
</authentication-manager>

最佳答案

如果将命名空间配置放在一边并使用“纯”bean 配置,则可以自定义 ExceptionTranslationFilter 以使其在 ajax 请求的情况下绕过配置的 AuthenticationEntryPoint .详细解释了一个示例 here .

ExceptionTranslationFilter 的想法是它检测到在执行请求之前抛出的 AuthenticationException 或 AccessDeniedException。在这些情况下,如果用户未登录,通常它应该启动 authenticationEntryPoint。在 AccessDeniedException 和用户登录的情况下,ExceptionTranslationFilter 通常只返回一个 http 状态代码 403 (禁止访问)。

但是,如果您可以自定义ExceptionTranslationFilter,如blog post mentionned above ,您可以通过查看 http header 来检测被拒绝的请求是否是 ajax 请求。在这种情况下,您可以像 thread balusC mentionned 那样调用 AuthenticationEntryPoint,而不是发送重定向。 ,但在 ExceptionTranslationFilter 中而不是在 jsf ExceptionHandler 中执行。

希望这对您有所帮助。

关于spring - 如何处理 AJAX 请求中的 session 超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17090476/

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