2013-11-22 73 views
7

我已经安装了弹簧安全核心&弹簧安全的UI。还在roleadmin中添加了testuser。Grails的Spring Security的UI,用户和角色管理访问

当我运行应用程序,我得到的所有控制器列表

,登录控制器的用户名密码&工作。但是当点击其他控制器的说

“很抱歉,您无权查看此页。”

我是否需要添加任何其他角色来获取用户和角色管理界面的访问?

插件版本。

编译 ':弹簧安全核:2.0-RC2' 编译 “:弹簧安全的UI:1.0-RC1”

访问此URL: //127.0.0.1:8080/sec-测试/角色/搜索

这里是我的屏幕,登录后。

enter image description here

+0

你尝试把@Secured([“ROLE_USER”])高清指数= {}每个方法之前,控制器 – LynAs

+0

是的,这我在我的应用contoler加入它的工作原理。我如何访问安全插件用户角色管理contolers? – sfgroups

+0

据我所知没有角色管理控制器 – LynAs

回答

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 { 
} 
+0

喜@伯特 - 贝克卫斯,我已经升级Spring Security的核心,ACL和用户界面,最新的版本,但现在如果我尝试登录,我得到很抱歉,您无权查看此页。我们是否需要做一些特别的事情,比如从Spring Security 1.2,ui 0.2和acl 1.1.1版本升级。 –

+0

hi @sfgroups,上面的解决方案解决了你的问题吗?我得到同样的错误,我尝试了以上的解决方案,但无法取得成功。 –

0

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

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

我不知道我必须为应用程序创建用户和角色控制器。谢谢 – sfgroups

+0

您不必创建它们。这些控制器由Spring Security UI插件提供。 – Naresha

+0

没有创建那些我们如何给ROLE_ADMIN组赋予访问权限? – sfgroups

4

更好的方法是通过这些指令使anounymous登记:

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

和内容添加到注册控制器:

import grails.plugin.springsecurity.annotation.Secured 

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

默认情况下,Grails使用一个悲观主义者网址锁定的方法,这意味着如果该网址未明确列入白名单,则会显示相同的消息“对不起,您无权查看此网址”。除了加入@Secured到控制器,你也可以添加以下到您的config/conf.groovy文件白名单的网址:

'/action':     ['ROLE_ADMIN'] 

'/action' = 

链接到你的动作。也可以用通配符如杵:

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

['ROLE_ADMIN'] = 

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

这允许授权访问所有这些访问URL

0

的角色..你可以还要手动配置它。

1

正如上面提到的,插件变为悲观锁不这么定义的安全级别的任何东西会抛出“对不起,您无权查看此页。”信息。

其他答案已经说了,你可以只使用s2ui重写的脚本生成的所有控制器,并添加注释@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用户访问。

相关问题