0

Я использую плагин весны безопасности в своем проекте Grails. Чтобы защитить URL-адреса, я использую interceptUrlMap.защитные контроллеры безопасности весны Grails

Мои классы пользователей и ролей: User.groovy и Role.groovy соответственно. На основе этих классов, s2-quickstart скрипт сгенерировал UserController.groovy и RoleController.groovy

Проблема возникает, когда я хочу, чтобы обеспечить UserController.groovy. Мое требование состоит в том, что я не могу разрешить всем пользователям создавать нового пользователя. Поэтому некоторые действия UserController необходимо блокировать для пользователей с соответствующими привилегиями роли.

Однако независимо от того, как я пытаюсь ограничить доступ, я вижу, что все действия UserController всегда доступны.

Не могли бы вы объяснить, где я иду не так. Любая помощь высоко ценится.

+0

Пожалуйста, поделитесь кодом. По крайней мере, 'UserController.groovy' и' Config.groovy'. – emilan

+0

grails.plugin.springsecurity.interceptUrlMap = [ '/': ['allowAll'], '/ **/js/**': ['permitAll'], '/ **/css/**' : ['allowAll'], '/ **/images/**': ['allowAll'], '/ **/data/**': ['permitAll'], '/ **/favicon .ico ': [' allowAll '], '/login/** ': [' permitAll '], '/logout/** ': [' permitAll '], '/user/edit/** ' : ['ROLE_ADMIN', 'ROLE_MRU', 'ROLE_FINANCE', 'ROLE_PROCUREMENT', 'ROLE_DATABASE_ADMIN'], '/ user/**': ['ROLE_ADMIN'], ] – Rammohan

+0

Извините за то, что я разместил код. У меня не было достаточного количества символов, чтобы опубликовать код entrie – Rammohan

ответ

0

Мне удалось решить проблему. Проблема заключалась в том, что я редактировал Config.groovy, пока приложение все еще работало. Горячего развертывания не было.

Как только я перезапустил приложение, функциональность начала работать.

Спасибо за помощь.

0

Лучше использовать аннотации вместо определения правил в Config.groovy. Это помогает двумя способами: во-первых, горячая перезагрузка всегда будет работать, а во-вторых, вы можете легко переопределить любое правило в Config.groovy. Это означает, что вы можете использовать как аннотацию, так и простые правила в Config.groovy.

Так изменить это в Config.groovy

grails.plugin.springsecurity.securityConfigType = "Annotation" 

и начать защищать контроллер или действия, например:

import grails.plugin.springsecurity.annotation.Secured 

@Secured(["ROLE_MRU"]) 
class UserController { 

    def edit() { 
     // action code 
    } 

    @Secured(["ROLE_ADMIN"]) 
    def show() { 
     // action code 
    } 
} 
Смежные вопросы