Карта запросов не работает в Grails, как ожидалось - PullRequest
0 голосов
/ 24 мая 2018

В Bootstrap.groovy я создал новую карту запросов с ROLE_ADMIN в качестве configAttribute и / ** в качестве URL.Когда я вошел как ROLE_ADMIN, я смог получить доступ ко всем URL-адресам.

Когда я добавляю новую карту реквизитов в пользовательском интерфейсе с ROLE_TEST в качестве configAttribute и / customer / ** в качестве URL, пользователь с ROLE_ADMIN не может получить доступстраница клиента.Несмотря на то, что ROLE_ADMIN имеет привилегию / **.

Теперь только пользователи с ROLE_TEST могут получить доступ к странице клиента, но не другие пользователи.Для этой функции желательно, чтобы тестовый пользователь мог иметь доступ только к странице клиента, а не к любой другой странице.Тем не менее, в настоящее время страница клиента может быть доступна только для тестового пользователя.

Config.groovy

settings-

grails.plugin.springsecurity.userLookup.userDomainClassName = 'com.bi.report.auth.User'
grails.plugin.springsecurity.userLookup.authorityJoinClassName = 'com.bi.report.auth.UserRole'
grails.plugin.springsecurity.authority.className = 'com.bi.report.auth.Role'
grails.plugin.springsecurity.requestMap.className = 'com.bi.report.auth.Requestmap'
grails.plugin.springsecurity.securityConfigType = 'Requestmap'

Bootstrap.groovy код

def loadRequestMap(){
        if (Requestmap.count()<=0) {
            new Requestmap(url: '/**', configAttribute: 'ROLE_ADMIN').save()
            /*new Requestmap(url: '/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save()*/
            new Requestmap(url: '/*/', configAttribute: 'ROLE_ADMIN').save();
            new Requestmap(url: '/logout/**', configAttribute: 'IS_AUTHENTICATED_REMEMBERED,IS_AUTHENTICATED_FULLY').save();
            new Requestmap(url: '/login/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save()
            new Requestmap(url: '/index/**', configAttribute: 'IS_AUTHENTICATED_ANONYMOUSLY').save();
        }
    }

Любые предложения приветствуются.Спасибо.

Версия Grails 2.3.4 Плагин безопасности Spring: compile ":spring-security-core:2.0-RC2"

1 Ответ

0 голосов
/ 31 мая 2018

Вам необходимо определить все роли, которые могут обращаться к URL.

Например: new Requestmap(url: '/admin/user/**', configAttribute: 'ROLE_ADMIN,ROLE_SUPERVISOR').save() ☝️ говорит, что пользователи с ROLE_ADMIN или ROLE_SUPERVISOR могут получить доступ к URL /admin/user/**

Подробнее об этом можно прочитать по адресу http://grails -plugins.github.io / grails-spring-security-core / 2.0.x / guide / requestMappings.html # requestmapInstances

/** для ROLE_ADMIN работает не так, как вы ожидаете, потому что плагин вычисляет наиболее конкретное правило, применимое к текущему запросу.

/customer/** более конкретно, чем /** поэтому применяется связанная роль ROLE_TEST.

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