1

我有这个问题:

在 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";
}

}

谢谢,阿德里安

4

1 回答 1

0

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

<sec:intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY" />
<sec:intercept-url pattern="/secure/**" access="ROLE_USER" />
于 2013-08-27T09:02:52.953 回答