gpt4 book ai didi

java - Spring Security不拦截登录调用

转载 作者:行者123 更新时间:2023-12-01 19:00:26 28 4
gpt4 key购买 nike

我正在尝试设置 Spring Security,我有一个 Controller ,它在验证失败后转发到登录页面。但我的拦截似乎没有接收到它......

Controller 片段:

if (validation not successful) {
return "login";
}

在我的 xml 中,我有:

<security:intercept-url pattern="/login*" access="ROLE_USER" /> 

但这失败了,我收到以下错误:

The requested resource (/myapp/WEB-INF/jsp/login.jsp) is not available.

如何让它拦截登录转发?

最佳答案

如果用户尚未登录,则意味着他没有ROLE_USER ,因此 Spring Security 不允许访问 /login

添加 use-expressions="true" to <http> element并将截取线更改为:

<http use-expressions="true">
<!-- ... -->
<security:intercept-url pattern="/login*" access="permitAll" />

另外,请确保 login.jsp 位于 /WEB-INF/jsp/login.jsp 下.

编辑评论后:

似乎你根本没有 Spring Security 配置,所以从这里开始:

<http auto-config='true' use-expressions="true">
<intercept-url pattern="/login*" access="permitAll"/>
<intercept-url pattern="/**" access="ROLE_USER" />
<!-- use login-page='/login' assuming you've got
Spring MVC configured to redirect to login.jsp -->
<form-login login-page='/login'/>
</http>

或者,如果您使用的是 Spring Security 3.1:

<http pattern="/login" security="none" />
<http auto-config='true'>
<intercept-url pattern="/**" access="ROLE_USER" />
<!-- use login-page='/login' assuming you've got
Spring MVC configured to redirect to login.jsp -->
<form-login login-page='/login'/>
</http>

创建/WEB-INF/jsp/login.jsp包含示例内容的文件:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<title>Login Page</title>
</head>
<body>
<h3>Login</h3>

<c:if test="${not empty error}">
<div class="errorblock">
Your login attempt was not successful, try again.<br /> Caused :
${sessionScope["SPRING_SECURITY_LAST_EXCEPTION"].message}
</div>
</c:if>

<form name='f' action="<c:url value='j_spring_security_check' />"
method='POST'>

<table>
<tr>
<td>User:</td>
<td><input type='text' name='j_username' value=''>
</td>
</tr>
<tr>
<td>Password:</td>
<td><input type='password' name='j_password' />
</td>
</tr>
<tr>
<td colspan='2'><input name="submit" type="submit"
value="submit" />
</td>
</tr>
</table>

</form>
</body>
</html>

此外,请阅读有关 Spring Security 的内容,因为这些确实是该框架的基础知识。

关于java - Spring Security不拦截登录调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12455190/

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