Выборочный запрет доступа к подмножеству действий для вошедшего в систему пользователя

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

Я не ищу здесь полноценного решения для авторизации, но моя проблема очень похожа.

Есть ли способ поставить какой-либо флаг или любую другую деталь с действием в struts-config.xml, которое можно использовать в коде Java, чтобы определить, относятся ли действия к категории, для которой я хочу выборочно запретить доступ?

ПРИМЕЧАНИЕ. Я не расширяю org.apache.struts.action.Action напрямую для своих действий. Вместо этого я определил абстрактный класс, который расширяет org.apache.struts.action.Action, а остальные действия в моем приложении расширяют этот абстрактный класс. Таким образом, я могу выполнить проверку здесь. Здесь я могу определить тип действия, используя функцию mappings.getPath(). Но я не хочу жестко кодировать список путей, которым я хочу выборочно запретить доступ, вместо этого я с нетерпением жду, можно ли это настроить в struts-config.xml.


person Salman A. Kagzi    schedule 26.07.2011    source источник


Ответы (1)


Это можно настроить в файле struts-config.xml с помощью используя атрибут roles в конфигурации <action>. Вы можете указать роли, которые должны быть у ваших пользователей, чтобы получить доступ к этому конкретному действию.

При этом вы можете избежать выполнения теста на mappings.getPath() (я согласен с вами, что это уродливое решение).

После настройки ролей вы можете создать собственный обработчик запросов для обрабатывайте эти роли любым удобным для вас способом.

Дополнительную информацию о ролях безопасности Struts можно найти в Интернете, но вот простой пример для начала.

person Community    schedule 26.07.2011
comment
Спасибо. Это было очень полезно. Вместо использования атрибута roles (который я планирую использовать для RBAC) я использую атрибут параметра в struts-config.xml и добавляю здесь параметр маркера. Этот параметр используется в моем AbstracAction, который сообщает о некоторых входных данных и выполняет общую проверку перед вызовом фактического действия. - person Salman A. Kagzi; 27.07.2011