Spring Security :Игнорировать страницу входа с помощью специального параметра URL

В настоящее время у меня есть установка, которая выглядит примерно так:

пружина -security.xml:

<http auto-config="true">
    <intercept-url pattern="/login*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <intercept-url pattern="/**" access="ROLE_USER" />
    <form-login login-page="/login"
                default-target-url="/main.html"
                authentication-failure-url="/failedLogin"/>
    <logout logout-url="/logout.html" logout-success-url="/login" />
</http>

<authentication-manager>
    <authentication-provider>
        <user-service>
            <user name="foo" password="bar" authorities="ROLE_USER" />                
        </user-service>
    </authentication-provider>
</authentication-manager>

web.xml:

<filter>
    <filter-name>springSecurityFilterChain</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
</filter>

<filter-mapping>
    <filter-name>springSecurityFilterChain</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

Все это, кажется, работает так, как ожидалось, однако в особых ситуациях я хочу, чтобы страница входа не использовалась, если пользователь передает специальный токен. Итак, в настоящее время, если пользователь перейдет по URL-адресу, такому как /dog, он увидит страницу входа, а если он передаст учетные данные foo/bar, то он войдет в систему и увидит страницу, соответствующую /dog.

Мне нужна возможность использовать URL-адрес, такой как /dog?token=abcd, который будет обходить экран входа в систему и переводить их непосредственно на страницу, соответствующую /dog. Если они предоставят недействительный токен, они просто увидят страницу с отказом в доступе.

6
задан digiarnie 19 August 2012 в 01:33
поделиться