2013-04-25 4 views
2

Я пытаюсь найти способ просто настроить URL-адрес, который выйдет из системы моего пользователя из системы. это только для тестирования. Сейчас мы используем страницу входа в систему по умолчанию в весеннем secuirtyКак создать выход с помощью Spring Security?

здесь моя весна-secuirty.xml

<?xml version="1.0" encoding="UTF-8"?> 
<beans:beans xmlns="http://www.springframework.org/schema/security" 
    xmlns:beans="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
         http://www.springframework.org/schema/beans/spring-beans-3.1.xsd 
         http://www.springframework.org/schema/security 
         http://www.springframework.org/schema/security/spring-security-3.1.xsd"> 


    <global-method-security pre-post-annotations="enabled" /> 

    <http use-expressions="true"> 
     <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-union**" /> 
     <intercept-url access="hasRole('ROLE_VERIFIED_MEMBER')" pattern="/ask-welfare**" /> 
     <intercept-url pattern='/*' access='permitAll' /> 

     <form-login default-target-url="/ask-union" /> 

     <logout logout-success-url="/" /> 

     <session-management session-fixation-protection="newSession"> 
      <concurrency-control max-sessions="1"/> 
     </session-management> 

    </http> 

    <authentication-manager> 
     <authentication-provider> 
      <user-service> 
       <user name="[email protected]" password="testing" authorities="ROLE_VERIFIED_MEMBER" /> 
       ser-service> 

     </authentication-provider> 
    </authentication-manager> 
</beans:beans> 

ответ

2

Добавить эту строку в конфиг

<logout logout-url="/sign-out"/> 

Тогда, если у вас есть ссылка к этому URL-адресу, затем он подпишет вас

(Добавьте его чуть ниже конфигурации успеха выхода из системы)

+0

не работал ... – SJS

+1

Мне нужно больше работать, чем это .. Что случилось? были ли ошибки? как они проявлялись? – rhinds

+0

Кроме того, согласно приведенному ниже примеру @ cabbagery - открутите logout-url в тег вместе с URL-адресом выхода из системы – rhinds

0

Дважды проверьте URL-адрес, который вы используете, - абсолютный путь должен быть your-domain/projectPath/sign-out, на примере SJS. Если соответствующая часть файла пружинного security.xml выглядит следующим образом, она должна работа:

<http use-expressions="true"> 

. . . 

    <logout 
     logout-success-url="/" 
     logout-url="/sign-out"/> 

Если вы в состоянии проверить подлинность, а затем просто перейти к этому пути, и он должен выполнить вход вне. Если он по-прежнему не пытается экспериментировать с промежуточными подкаталогами, указанными в URL-адресе, то есть your-domain/projectPath/some-subdirectory/log-out.

Вы можете подтвердить подлинность? Это может быть не просто аспект выхода из строя ...

1

Я немного опаздываю на это. Но ответ может помочь другим.

Используйте следующий код. logout-success-url - это URL-адрес, который вы хотите получить после выхода из системы.

<http auto-config="true" use-expressions="true" access-denied-page="/denied">  
    <logout invalidate-session="true" logout-success-url="/landing" delete-cookies="JSESSIONID" /> 
</http> 
0

Late к партии, но и для использования в будущем - если вы заинтересованы в том, как фильтры безопасности инстанцируются и настроены с XML, обратите внимание на следующий пакет:

org.springframework.security.config.annotation.web.configurers 

Для конфигурации фильтра выхода из системы это будет класс LogoutConfigurer. Если вы просмотрите метод LogoutConfigurer.createLogoutFilter(), вы увидите, как создается фильтр выхода по умолчанию. Это означает, что вы можете сделать следующее в классе @Configuration:

@Bean 
public LogoutFilter logoutFilter() { 
    // NOTE: See org.springframework.security.config.annotation.web.configurers.LogoutConfigurer 
    // for details on setting up a LogoutFilter 
    SecurityContextLogoutHandler securityContextLogoutHandler = new SecurityContextLogoutHandler(); 
    securityContextLogoutHandler.setInvalidateHttpSession(true); 

    LogoutFilter logoutFilter = new LogoutFilter("/", securityContextLogoutHandler); 
    logoutFilter.setLogoutRequestMatcher(new AntPathRequestMatcher("/logout")); 
    return logoutFilter; 
} 

Если у вас есть, что вы можете либо настроить далее фасолью или иметь что боб взял автоматически, так как его имя метода logoutFilter()