gpt4 book ai didi

java - 防止重定向到 Spring Security 的登录

转载 作者:IT老高 更新时间:2023-10-28 13:56:28 24 4
gpt4 key购买 nike

我有 Spring MVC + Spring Security 项目。

<http auto-config="true" access-denied-page="/security/accessDenied" use-expressions="true" disable-url-rewriting="true">

...
<intercept-url pattern="/dashboard/myaccount/**" access="hasAnyRole('ROLE_PERSON', 'ROLE_DEALER')"/>
...

<form-login login-page="/security/login" authentication-failure-url="/security/login?error=true"
default-target-url="/security/success" username-parameter="email"
password-parameter="secret"/>
<logout invalidate-session="true" logout-success-url="/index" logout-url="/security/logout"/>

如果用户进入登录页面,如果成功将被重定向到“/security/success”,在那里我使用 session 对象在 Controller 中做更多的事情(记录用户 ID,...等)

我的问题是,当一个 GUEST 用户访问/dashboard/myaccount(需要 AUTH)时,他被重定向到 LOGIN 页面(我不希望这样,我更喜欢抛出 404)。之后 Spring Security 不会重定向到/security/success。而是重定向到/dashboard/myaccount。

如果 GUEST 尝试访问 AUTH 页面,我希望找到一种方法来完全禁用此重定向到登录页面。

有什么办法吗?

Tnx

最佳答案

我们添加一个新的 authenticationEntryPoint:

<http auto-config="true" access-denied-page="/security/accessDenied" use-expressions="true"
disable-url-rewriting="true" entry-point-ref="authenticationEntryPoint"/>

<beans:bean id="authenticationEntryPoint" class="a.b.c..AuthenticationEntryPoint">
<beans:constructor-arg name="loginUrl" value="/security/login"/>
</beans:bean>

public class AuthenticationEntryPoint extends LoginUrlAuthenticationEntryPoint {
public AuthenticationEntryPoint(String loginUrl) {
super(loginUrl);
}

@Override
public void commence(HttpServletRequest request, HttpServletResponse response, AuthenticationException authException) throws IOException, ServletException {
response.sendError(403, "Forbidden");
}
}

关于java - 防止重定向到 Spring Security 的登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15847932/

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