В моей системе у меня есть множество ролей, назначенных пользователям (давайте предположим 3 на данный момент ROLE_ADMIN, ROLE_USER, ROLE_SERVICES
). В одном из моих контроллеров (допустим, SearchController
, что у нас есть три действия serviceIndex{}, userIndex{} and adminIndex{}
), я хочу, чтобы пользователи любой роли могли иметь доступ к двум действиям (первые два). Для окончательного действия я хочу ограничить действие против пользователя одного типа ролей (скажем, ROLE_USER), но разрешить доступ к пользователям других ролей (то есть до ROLE_ADMIN, ROLE_SERVICE
. В таблице requestmap у меня есть что-то вроде следующего:Ошибка конфигурирования requestmap в весеннем ядре безопасности для grails
config_attribute ------------------------------------------------ -----------> url
ROLE_ADMIN, ROLE_SERVICE, ROLE_USER ------------------------------ >/search/serviceIndex
ROLE_ADMIN, ROLE_SERVICE, ROLE_USER ------------------------------->/search/userIndex
ROLE_ADMIN, ROLE_SERVICE ----------------------------------------->/search/adminIndex
Поскольку в третьем правиле указано, что url '/ search/adminIndex' недоступен для ROLE_USER, пользователю с этой ролью должно быть отказано в авторизации для доступа к URL-адресу. Но пользователь может получить доступ к URL-адресу. Какова правильная конфигурация. Я попробовал что-то вроде /search/adminIndex/**
, но это тоже не работает. С другой стороны, ни один из URL-адресов еще не имеет суффиксов, но я все равно хотел бы предотвратить доступ, если бы пользователи манипулировали URL-адресом, например, добавляя суффиксы, например, /search/userIndex/56a
.
С уважением, dipess
Даже если вы правы, эта логика кажется ошибочной, потому что каждый URL-адрес отличается. Я действительно не понимаю, почему текущая конфигурация OPs не должна работать. – Gregg
Одной из причин может быть то, что другие правила, которые не показаны, сопоставляются перед любым вставленным. В этом случае мой ответ был бы неправильным. –