проблема с обработкой меню - подменю на основе безопасности пружины - PullRequest
0 голосов
/ 30 декабря 2010

Я настроил подключаемый модуль ядра безопасности Spring, используя таблицу запроса внутри базы данных ..

Теперь внутри таблицы запроса у меня есть все возможные URL-адреса и эквивалентные роли, которые могут получить доступ к этому URL-адресу ...

Теперь я хочу создать меню и подменю на основе URL-адресов, хранящихся в таблице запроса ...

Поэтому мое требование состоит в том, чтобы сверять URL-адреса меню и подменю с привилегиями зарегистрированных пользователей ... И есливошедший в систему пользователь имеет какую-либо одну привилегию, тогда мне нужно отобразить это главное меню и доступные подменю ....

Например, у меня в проекте есть меню с именем user, которое имеет следующие подменю:

**Users (main menu)**
Manage Users (sub menu)
Import Users (sub menu)

Теперь внутри моего header.gsp я успешно выполнил вышеупомянутое требование, используя условие if else, например:

if ( privs.contains("/users/manageUsers") || privs.contains("/users/importUsers"))

здесь privs - это список URL-адресов из таблицы requestmap для вошедшего в систему пользователя.

Но я хочу добиться этого, используя Spring Security Tag Lib, поэтому для сравнения URL я нашел следующий тег от Spring Security CoПеречень документации:

<sec:access url="/users/manageUsers">

Но я немного запутался в том, что я могу заменить или подготовить условия с помощью библиотеки тегов. Есть ли какой-либо доступный тег, который проверяет несколько URL-адресов и оценивает его как истинное или ложное?

Конечно, я могу использовать тег sec: access с некоторой логикой флага, но есть ли доступные теги, которые могут выполнить мое требование напрямую?

Заранее спасибо ...

1 Ответ

1 голос
/ 30 декабря 2010

Тег <sec:access/> имеет атрибут expression, который оценивает выражение, которое вы передаете ему: http://burtbeckwith.github.com/grails-spring-security-core/docs/manual/guide/6%20Helper%20Classes.html#6.1%20SecurityTagLib

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

...