2013-12-14 3 views
0

Независимо от того, что я делаю, я не могу выйти из системы на работу. У меня есть меню, которое отображается только через роль членов. Я пробовал как недействительный сеанс, так и файл/j_spring_security_logout через документацию Spring ... Оба переходят на главную страницу, но меню и учетные данные отображаются на главной странице. Таким образом, выход из системы не работает. Вот мои записи в файле Spring Security.xml.Выход из системы Spring 3 Безопасность

<logout logout-url="/logout"/> 
<logout logout-url="/j_spring_security_logout" logout-success-url="/home" 
     delete-cookies="JSESSIONID" invalidate-session="true"/> 

Как вы можете видеть, я пробовал оба. Здесь находится контроллер выхода.

@RequestMapping(value = "/logout", method=RequestMethod.GET) 
public String logout(HttpServletRequest request, HttpServletResponse response) { 
    logger.info("Logging out!"); 

    response.setHeader("pragma", "no-cache");    
    response.setHeader("Cache-control", "no-cache, no-store, must-revalidate"); 
    response.setHeader("Expires", "0"); 

    Cookie jSessionCookie = new Cookie("JSESSIONID", null); 
    jSessionCookie.setMaxAge(0); 
    response.addCookie(jSessionCookie); 
    Cookie activityIdCookie = new Cookie("activityId", null); 
    activityIdCookie.setMaxAge(0); 
    response.addCookie(activityIdCookie); 

    request.getSession().invalidate(); //Attempt to logout user.  

    return ("redirect://"); 
} 

Любая помощь очень ценится.

+0

* Выход * обрабатывается цепочкой фильтров безопасности (как и почти все в Spring Security). Фактический запрос * logout * никогда не попадет на сервлет диспетчера. Не выполнять логику выхода вручную (недействительность сеанса и т. Д.). См. * Ответ * Ralph ... –

ответ

1

Вам нужно только один обработчик выхода из системы и NO дополнительного контроллера:

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

Просто дайте запрос пользователя URL-адрес http://localhost/yourApp/logout.

+0

Но это НЕ работает ... – user3103336

+0

Я сделал это .. Он доставит меня на главную страницу .. Проблема в том, что пользователь все еще находится в системе. Их разрешения все еще существуют, пользователь credentitals все еще присутствуют. – user3103336

+0

Это путь, если он не работает, проблема должна быть где-то в другом месте. Вы используете tomcat? У менеджера Tomcat есть функция, чтобы посмотреть на сеанс. Spring Security хранит информацию о пользователе в сеансе. Вы можете использовать диспетчер томатов, чтобы проверить, что идентификатор сеанса изменяется при выходе из системы, и посмотрите информацию, хранящуюся под весной. – Ralph

Смежные вопросы