Могу ли я сделать это в Grails 2: защитить отдельные вкладки с помощью Spring Security - PullRequest
0 голосов
/ 14 июня 2009

Если я создаю вкладки, используя один из параметров графического интерфейса Grails (какой из них мне следует использовать), можно ли включать и выключать вкладки в зависимости от текущего пользователя? Например, только пользователи с ролью администратора должны видеть вкладку «Управление пользователями». И даже анонимные пользователи должны видеть вкладку Main Content.

В идеале я хотел бы использовать Spring Security ACL.

Ответы [ 3 ]

0 голосов
/ 29 января 2013

Spring Security имеет хорошую библиотеку тегов для этого. Вы можете ограничить визуализацию вкладок, используя что-то похожее на это:

<sec:authorize access="hasRole('supervisor')">

This content will only be visible to users who have
the "supervisor" authority in their list of <tt>GrantedAuthority</tt>s.

</sec:authorize>

Вы можете просто включить тег jsp как обычно:

<%@ taglib prefix="sec" uri="http://www.springframework.org/security/tags" %>

Подробнее об этом здесь, если вам нравится

0 голосов
/ 29 января 2013

Просто добавьте, иногда вы можете добавить слишком много логики и кодирования в представление (GSP). Вы можете передать больше кода в контроллер, используя другие опции, такие как плагин навигации вместе с плагином Spring-Security. Приятно то, что вид просто чище, удаляет теги условий.

grails install-plugin navigation

Тогда в контроллере просто используйте аннотацию @Secured. Например, я создал две вкладки с двумя соответствующими контроллерами.

@Secured(['ROLE_ADMIN'])
class SlidesController {

static navigation = [
    group:'tabs', order:10, title:'Users', action:'index'
]
def index = {
      .....
}

@Secured(['ROLE_ADMIN'])
class ProgramsController {

static navigation = [
    group:'tabs', order:10, title:'Programs & Presentation', action:'index'
]
def index = {
      .....
}

По виду:

<head>
     ... other head elems.
  <nav:resources/>
</head>

<body>
<nav:render/>
    ... Your other stuff
</body>

Вкладки появляются автоматически (было бы также полезно сделать этот вид макетом GSP).

enter image description here

0 голосов
/ 16 июня 2009

Да, это возможно и довольно просто с Acegi (Spring Security Plugin), см. этот раздел документации . Вам нужно будет определить некоторые роли, а затем описать, как эти роли применяются к различным URL-адресам. Пример (по ссылке выше):

/ админ / = ROLE_USER / Книга / тест / = IS_AUTHENTICATED_FULLY / Книга / ** = ROLE_SUPERVISOR

В книге Grails In Action есть объяснение, как именно это сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...