Grails Spring Security UI、用户和角色管理访问
Posted
技术标签:
【中文标题】Grails Spring Security UI、用户和角色管理访问【英文标题】:Grails Spring Security UI, user and Role management access 【发布时间】:2013-12-08 00:10:21 【问题描述】:我已经安装了 spring-security-core 和 spring-security-ui。还在 roleadmin 中添加了 testuser。
当我运行应用程序时,我得到所有控制器列表,登录控制器使用用户名和密码。但是当点击其他控制器时,它会说
'抱歉,您无权查看此页面。'
我是否需要添加任何其他角色才能获得用户和角色管理 UI 访问权限?
插件版本。
编译':spring-security-core:2.0-RC2' 编译“:spring-security-ui:1.0-RC1”
访问此网址: //127.0.0.1:8080/sec-test/role/search
这是我登录后的屏幕。
【问题讨论】:
您是否尝试将@Secured(['ROLE_USER']) def index = 放在控制器中的每个方法之前 是的,我在我的应用程序控制器中添加了它,它可以工作。如何访问安全插件用户角色管理控制器? 据我所知没有角色管理控制器 嗨,我正在尝试使用 Spring security ui。有什么入门教程吗? 【参考方案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 用户访问。
【讨论】:
【参考方案2】:默认情况下,grails 对 url 锁定使用悲观方法,这意味着如果该 url 未明确列入白名单,它会显示相同的消息“抱歉,您无权查看此 URL”。除了将 @Secured 添加到您的控制器之外,您还可以将以下内容添加到您的 config/conf.groovy
文件并将 URL 列入白名单:
'/action': ['ROLE_ADMIN']
'/action' =
您的操作的网址。也可以与通配符一起使用,例如:
'/**/css/**': ['permitAll']
['ROLE_ADMIN'] =
可以访问url的角色
【讨论】:
【参考方案3】:更好的方法是通过这些说明进行匿名注册:
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
【讨论】:
【参考方案4】:在 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']
这允许授予对所有这些的访问权限。您也可以手动配置它。
【讨论】:
【参考方案5】:首先在 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
【讨论】:
嗨@burt-beckwith,我已将Spring security core、acl和ui升级到最新版本,但现在如果我尝试登录,我会收到抱歉,您无权查看此页面。当我从 spring security core 1.2、ui 0.2 和 acl 1.1.1 版本升级时,我们是否需要做任何特别的事情。 嗨@sfgroups,上述解决方案是否解决了您的问题?我遇到了同样的错误,我尝试了上述解决方案但无法成功。【参考方案6】:安装插件后,我需要运行此 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/
【讨论】:
【参考方案7】:用户角色映射在 UserController 中完成。
URL - http://127.0.0.1:8080/sec-test/user
【讨论】:
我不知道我必须为应用程序创建用户和角色控制器。谢谢 您不必创建它们。这些控制器由 spring security UI 插件提供。 如果不创建这些,我们如何授予 ROLE_ADMIN 组访问权限?以上是关于Grails Spring Security UI、用户和角色管理访问的主要内容,如果未能解决你的问题,请参考以下文章
在 spring security UI grails 插件中添加更多属性
Grails Spring Security UI、用户和角色管理访问
grails spring-security-ui 插件重定向回应用程序
grails spring security ui登录有时会出现奇怪的重定向