Пользовательский интерфейс Grails Spring Security, доступ пользователя и управление ролями

Я установил spring-security-core & spring-security-ui. также добавлен testuser в рольадмин.

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

"Извините, у вас нет прав для просмотра этой страницы."

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

версия плагина.

compile ': spring-security-core: 2.0-RC2' compile ": spring-security-ui: 1.0-RC1"

доступ к этому URL: //127.0.0.1:8080/sec-test/role/search

вот мой экран, после входа в систему.

7 ответов

Решение

Сначала создайте свои роли и протестируйте пользователя в BootStrap.groovy:

import springsecurity.User
import springsecurity.Role
import springsecurity.UserRole

class BootStrap {

    def init = { servletContext ->

        def adminRole = new Role(authority: 'ROLE_ADMIN').save(flush: true)
        def userRole = new Role(authority: 'ROLE_USER').save(flush: true)

        def testUser = new User(username: 'testusername', password: '1234')
        testUser.save(flush: true)

        UserRole.create testUser, adminRole, true

        assert User.count() == 1
        assert Role.count() == 2
        assert UserRole.count() == 1

    }
    def destroy = {
    }
}

Затем переопределите, как предложено:

grails s2ui-override auth
grails s2ui-override layout
grails s2ui-override user package.name
grails s2ui-override role package.name

Наконец добавили защищенные аннотации к вашим контроллерам, а именно:

package springsecurity
import grails.plugin.springsecurity.annotation.Secured

@Secured(['ROLE_ADMIN'])
class RoleController extends grails.plugin.springsecurity.ui.RoleController {
}

Лучший способ сделать анонимную регистрацию по этим инструкциям:

grails s2ui-override auth, grails s2ui-override layout, grails s2ui-override user com.myApp,grails s2ui-override role com.myApp, grails s2ui-override register com.myApp

и добавьте это в регистр контроллера:

import grails.plugin.springsecurity.annotation.Secured

@Secured(['ROLE_ANONYMOUS'])
class RegisterController extends      grails.plugin.springsecurity.ui.RegisterController {
}

По умолчанию Grails использует пессимистический подход для блокировки URL, что означает, что он показывает то же сообщение "Извините, вы не авторизованы для просмотра этого URL", если этот URL явно не указан в белом списке. Помимо добавления @Secured на ваш контроллер, вы также можете добавить следующее к вашему config/conf.groovy файл и белый список URL:

'/action':                    ['ROLE_ADMIN']

'/action' =

URL к вашему действию. также может быть забит с джокерами, например:

'/**/css/**':                 ['permitAll']

['ROLE_ADMIN'] =

роль, которая может получить доступ к URL

Как уже упоминалось выше, плагин изменился на пессимистическую блокировку, поэтому любая вещь без определенного уровня безопасности будет выдавать "Извините, у вас нет прав для просмотра этой страницы". сообщение.

В других ответах уже говорилось, что вы можете просто использовать скрипт s2ui-override для генерации всех контроллеров и добавления аннотации @Secure.

grails s2ui-override user com.myApp
grails s2ui-override role com.myApp

затем отредактируйте, чтобы добавить

import grails.plugin.springsecurity.annotation.Secured
@Secured(['ROLE_ADMIN'])
class UserController ...

Но вместо того, чтобы создавать кучу пустых контроллеров, вы можете просто изменить статический файл правил в Config.groovy.

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
    '/':                              ['permitAll'],
    '/**/css/**':                     ['permitAll'],
    '/**/images/**':                  ['permitAll'],
    <snip>
    '/register/**':                   ['permitAll'],
    '/user/**':                       ['ROLE_ADMIN'],
    '/role/**':                       ['ROLE_ADMIN'],

Добавление этих трех строк сделает контроллер регистра доступным для всех, а контроллеры пользователей и ролей будут доступны только пользователям ROLE_ADMIN.

После установки плагинов мне нужно запустить этот s2ui-override для создания контроллеров в приложении

grails s2ui-override auth
grails s2ui-override layout
grails s2ui-override user com.myApp
grails s2ui-override role com.myApp

Эта страница была полностью справочной.

http://ajibrans.wordpress.com/2012/02/04/spring-security-plugin-with-grails-1-3-7/

Сопоставление ролей пользователей выполняется в UserController.

URL - http://127.0.0.1:8080/sec-test/user

На конфиг.груовый

grails.plugin.springsecurity.controllerAnnotations.staticRules = [
'/':                              ['permitAll'],
'/**':                              ['permitAll'],
'/index':                         ['permitAll'],
'/user/search':                   ['permitAll'],
'/plugins/jquery-ui-1.10.3/**':   ['permitAll'],
'/index.gsp':                     ['permitAll'],
'/assets/**':                     ['permitAll'],
'/**/js/**':                      ['permitAll'],
'/**/css/**':                     ['permitAll'],
'/**/images/**':                  ['permitAll'],
'/**/favicon.ico':                ['permitAll']

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

Другие вопросы по тегам