Spring security 3.1.4后门

时间:2013-08-27 07:36:47

标签: spring login

我有这个问题:

在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, 阿德里安

1 个答案:

答案 0 :(得分:0)

您似乎缺少<intercept-url>标签来配置对某些路径的访问权限。

<sec:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<sec:intercept-url pattern="/secure/**" access="ROLE_USER" />