Grails Spring Security UI,用户和角色管理访问

时间:2013-11-22 23:17:30

标签: grails spring-security

我安装了spring-security-core&弹簧安全的UI。还在roleadmin中添加了testuser。

当我运行应用程序时,我获得了所有控制器列表,登录控制器使用了用户名&密码。但当点击其他控制器时,它说

'抱歉,您无权查看此页面。'

我是否需要添加任何其他角色才能获得用户和角色管理UI访问权限?

插件版本。

compile':spring-security-core:2.0-RC2' 编译“:spring-security-ui:1.0-RC1”

访问此网址:  //127.0.0.1:8080/sec-test/role/search

登录后,这是我的屏幕。

enter image description here

7 个答案:

答案 0 :(得分:6)

首先在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 {
}

答案 1 :(得分:5)

更好的方法是通过这些指令进行无条件注册:

grails s2ui-override authgrails s2ui-override layoutgrails s2ui-override user com.myAppgrails s2ui-override role com.myAppgrails s2ui-override register com.myApp

并将其添加到Register controller:

import grails.plugin.springsecurity.annotation.Secured

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

答案 2 :(得分:2)

默认情况下,grails使用悲观主义方法进行网址锁定,这意味着如果该网址未明确列入白名单,则会显示相同的消息“抱歉,您无权查看此网址”。除了将 @Secured 添加到您的控制器之外,您还可以将以下内容添加到您的config/conf.groovy文件和白名单中:

'/action':                    ['ROLE_ADMIN']

'/action' =

url to your action。也可以使用外卡,例如:

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

['ROLE_ADMIN'] =

可以访问网址的角色

答案 3 :(得分:1)

安装插件后,我需要运行此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/

答案 4 :(得分:1)

如上所述,该插件已更改为悲观锁定,因此任何没有定义安全级别的内容都会抛出该内容,抱歉,您无权查看此页面。'消息。

其他答案已经说过你可以使用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用户才能访问用户和角色控制器。

答案 5 :(得分:0)

用户角色映射在UserController中完成。

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

答案 6 :(得分:0)

在config.groovy

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']

这允许授予对所有这些的访问权限。您也可以手动配置它。