2017-01-19 8 views
1

Я устанавливаю систему безопасности на свой проект (Grails - Angularjs) с Spring Security Rest Plugin v1.5.4 (с использованием пружинного сердечника 2.0.0) для Grails 2.4.4 , Doc об этом плагине можно найти here.404, когда выходите из системы Spring Spring Rest для Grails

Я тестирую вход и выход в систему с клиентом postman chrome rest, и я могу сделать вход в систему ОК, но я получаю 404, когда я выхожу из системы.

В документации ясно говорит:

выхода из системы фильтра предоставляет конечную точку для удаления маркеров. Он будет читать токен из HTTP-заголовка. Если найдено, удалит его из хранилища , отправив ответ 200. В противном случае, он будет посылать 404 ответ

Вы можете настроить его в Config.groovy использовании этого свойства:

Config ключ ................. .................................................. ................ По умолчанию значение

grails.plugin.springsecurity.rest.logout.endpointUrl .............. ......../api/logout grails.plugin.springsecurity.rest.token.validation.headerName .... X-Auth-Token

Таким образом, после выполнения входа успешно, я пытался сделать выход из системы для этого URL (my_host_url/API/выхода из системы) с методом GET и посылки заголовка X-Auth-Токен с маркером I ранее было получено от входа в систему.

Но я продолжаю получать 404. См изображение ниже

enter image description here

Редактировать: Я устанавливаю карту цепи, как это (для того, чтобы получить без гражданства поведение):

grails.plugin.springsecurity.filterChain.chainMap = [ 
     '/api/**': 'JOINED_FILTERS,-exceptionTranslationFilter,-authenticationProcessingFilter,-securityContextPersistenceFilter,-rememberMeAuthenticationFilter', // Stateless chain 
     '/**': 'JOINED_FILTERS,-restTokenValidationFilter,-restExceptionTranslationFilter'                   // Traditional chain 
] 

So. Что я делаю неправильно здесь, или чего мне не хватает?

Заранее благодарен!

+0

Вы можете указать свой код для метода «выхода из системы», я думаю, отсутствует сопоставление ресурсов или метод «получить» или правильный «путь» – devbd

+0

@devbd, спасибо за ваш ответ! На самом деле я не реализовал метод «logout». Я думал, что плагин добавил это неявно как метод 'login'. Это верно? – lealceldeiro

+0

, пожалуйста, проверьте адрес плагина по умолчанию. Я думаю, URL должен быть только «/ logout». – devbd

ответ

1

Вы пропустили еще один отрывок из документов. Это предупреждающее сообщение буквально перед цитируемым вами куском и говорит:

Выход из системы невозможен при использовании токенов JWT (стратегия по умолчанию), так как на сервере не сохраняется состояние.

Если вы все еще хотите выйти из системы, вы можете предоставить свою собственную реализацию, создав подкласс JwtTokenStorageService и переопределив методы storeToken и removeToken. Затем зарегистрируйте свою реализацию в resources.groovy как tokenStorageService.

+0

Большое спасибо за ваш ответ! Да, действительно, это очень ясно для меня ... но я подумал, что часть «Фильтр выхода из системы предоставляет конечную точку для удаления токенов» (я думаю, эта конечная точка:/api/logout) означает, что мы можем назвать этот URL с заголовок (X-Auth-Token), обеспечивающий токен аутентификации, и он удалит токен из активных токенов на серверной памяти или что-то в этом роде. Это верно? ... или это означает, что мы должны * реализовать подкласс 'JwtTokenStorageService' в любом случае, если мы хотим сделать выход на сервер? Кстати, спасибо за этот плагин! ;) – lealceldeiro