我安装了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
登录后,这是我的屏幕。
答案 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 auth
,grails s2ui-override layout
,grails s2ui-override user com.myApp
,grails s2ui-override role com.myApp
,grails 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']
这允许授予对所有这些的访问权限。您也可以手动配置它。