Пользовательский интерфейс 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']
Это позволяет предоставить доступ ко всем этим.. вы также можете вручную настроить его.