Я хотел бы отозвать полномочия «ROLE_ADMIN» у пользователя, когда он выходит из зоны «/ auth / **».
Как мне добиться такой функциональности?Могу ли я установить какой-либо фильтр на все URL-адреса, кроме / auth / **, который отменяет полномочия у пользователя?
Можно ли отменить его "на лету"?
Я думаювы неправильно понимаете значение элемента intercept-url
:
<security:intercept-url pattern="/auth/**" access="ROLE_ADMIN"/>
Это НЕ говорит " предоставить пользователю ROLE_ADMIN
в дереве /auth/**
".В нем говорится, что «пользователю, у которого есть ROLE_ADMIN
, разрешен доступ к страницам в дереве /auth/**
».
Идея о том, что роль пользователя меняется в зависимости отто, на что он / она смотрит, странно, если не сказать больше.
Я пытаюсь проверять имя пользователя и пароль каждый раз, когда пользователь нажимает "/ auth /** "psth.
ОК, этот вид имеет смысл как требование.(Хотя, как гипотетический пользователь, я нахожу загадочным и / или раздражающим, что простое перемещение по сайту приводит к выходу из системы.)
Но я не думаю, что вам следует делать это, изменяя пользователя.роль (и) на лету.Если вы сделаете это, вы будете обязаны получать ответы «Отказано в доступе», а не перенаправлять на страницу входа.
Что вам действительно нужно сделать, это вернуть их в состояние «не вошел».Но даже это может быть немного сложнее.Если страницы в дереве /auth/**
имеют ссылки на таблицы стилей или файлы сценариев, то когда браузер извлекает эти ссылки, фильтры безопасности могут подумать, что пользователь вышел из дерева /auth/**
и выйти из него.