我有这个问题:
在java web-app(带有spring和spring-security 3.1.4)中有一个sso身份验证;这意味着用户一旦登录他的电脑就会进行身份验证。
配置如下:
<sec:http>
<sec:logout />
<sec:form-login login-page="/login.jsp" default-target-url="/" />
<sec:anonymous username="guest" granted-authority="ROLE_GUEST" />
<sec:custom-filter ref="headersFilter" after="SECURITY_CONTEXT_FILTER" />
<sec:custom-filter ref="jaasFilter" after="SERVLET_API_SUPPORT_FILTER" />
</sec:http>
这有效(实际上login.jsp不存在,因为用户已按上述方式登录)。
现在的问题是我想要一个“后门”;这意味着我和我的团队应该有一个登录页面来测试和保存应用程序。
它应该像这样工作:
- 我调用localhost / wepapp / myloginpage,我应该看到myloginpage.jsp(现在可以使用了);
- 我点击“登录”按钮然后输入第二个“元素”,如果登录正常,那么我应该被重定向到“/”(这不起作用,我只是重定向到“登录” “);
- 如果我调用它(localhost / wepapp),下面的配置似乎我也可以看到没有身份验证的“/”
我尝试了这个配置,但它不起作用,我的意思是我可以看到“/”没有身份验证,我被重定向到登录(我也尝试了其他小的变化,但结果相同,或多或少):
<sec:http pattern="/myloginpage">
<sec:logout />
<sec:form-login login-page="/myloginpage" default-target-url="/" />
</sec:http>
<sec:http pattern="/login">
<sec:logout />
<sec:form-login login-page="/login" default-target-url="/" />
<sec:anonymous username="guest" granted-authority="ROLE_GUEST" />
<sec:custom-filter ref="headersFilter" after="SECURITY_CONTEXT_FILTER" />
<sec:custom-filter ref="jaasFilter" after="SERVLET_API_SUPPORT_FILTER" />
</sec:http>
我的myloginpage.jsp:
<form action="login" method="POST">
<table>
<tr>
<td>
Name
</td>
<td>
<input type="text" name="name">
</td>
</tr>
.........
</form>
我还有myloginpage的控制器:
@Controller
public class Myloginpage {
publicMyloginpage() {
}
@RequestMapping("/myloginpage")
public String home() {
return "myloginpage";
}
}
Thankx, 阿德里安
答案 0 :(得分:0)
您似乎缺少<intercept-url>
标签来配置对某些路径的访问权限。
<sec:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<sec:intercept-url pattern="/secure/**" access="ROLE_USER" />