Сбой выхода из системы безопасности Spring http-bio-8080 "-exec-5" java.lang.StackOverflowError - PullRequest
1 голос
/ 16 марта 2011

Я видел несколько примеров выхода из Spring, и он кажется мне немного абстрактным.У меня есть ссылка с href = "appcontext_path / auth / logout.html".В примерах, которые я видел, в папке auth нет психического logout.html.Поэтому я предполагаю, что это закулисная задача.Я хочу иметь возможность щелкнуть ссылку выхода из системы, которая делает недействительным сеанс и все связанные cookie-файлы и переходит на страницу входа (auth / login.html).Когда я пробую приведенную ниже конфигурацию, я получаю исключение в потоке "" http-bio-8080 "-exec-5" java.lang.StackOverflowError

<global-method-security secured-annotations="enabled">
</global-method-security>
<http security="none" pattern="/javax.faces.resource/**" />
<http security="none" pattern="/services/rest-api/1.0/**" />
<http security="none" pattern="/preregistered/**" />
<http access-denied-page="/auth/denied.html">
    <intercept-url
        pattern="/**/*.xhtml"
        access="ROLE_NONE_GETS_ACCESS" />
    <intercept-url
        pattern="/auth/*"
        access="ROLE_ANONYMOUS" />
     <intercept-url
        pattern="/registered/*"
        access="ROLE_USER" />
    <form-login
        login-processing-url="/j_spring_security_check.html"
        login-page="/auth/login.html"
        default-target-url="/registered/home.html"
        authentication-failure-url="/auth/login.html" />
    <logout logout-url="/auth/logout.html"
            logout-success-url="/auth/login.html" />
    <anonymous username="guest" granted-authority="ROLE_ANONYMOUS"/>
    <remember-me user-service-ref="userManager" key="ddddd23aferq3f3qrf"/>
</http>
<!-- Configure the authentication provider -->
<authentication-manager>
    <authentication-provider user-service-ref="userManager">
            <password-encoder ref="passwordEncoder" />
    </authentication-provider>
</authentication-manager>

Ответы [ 2 ]

0 голосов
/ 22 июня 2011

Просто удалите тег <logout/> и используйте j_spring_security_logout в качестве ссылки на функцию выхода из системы.

0 голосов
/ 30 мая 2011

У вас есть ошибка в конфигурации <logout logout-url="/auth/logout.html" logout-success-url="/auth/login.html" /> вызывает фильтр выхода из Spring, который перехватывает logout.html запросов на logout.html (то есть на себя) - и это вызывает SOE.

Вы должны использовать разные URL для logout-url и logout-success-url.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...