Grails Spring Security UI插件 - 它是否支持组?

时间:2014-07-25 02:38:56

标签: grails spring-security

我已准备好实施Spring Security UI插件(我们已经实现了Spring Security Core插件)。我知道核心插件支持用户,角色和组,但是,我在Spring Security UI插件的文档中没有看到任何组的提及。 Spring Security UI插件不支持创建,编辑等组吗?有人尝试添加此功能吗?

2 个答案:

答案 0 :(得分:0)

迟到的回复,但我有同样的问题,所以我想我会尝试一下。 我自己试过这个,我相信答案是。 (开箱即用)

spring security ui插件不考虑这些组。如果您尝试编辑用户

myapp/user/edit/1

你会收到某种错误,如:

Class groovy.lang.MissingPropertyException
Message
No such property: authority for class: com.myapp.security.SecGroup Possible solutions: authorities

我很好奇你是否找到了办法解决这个问题?或者我们必须自定义插件。

答案 1 :(得分:0)

正如Julian所说,用户界面不支持开箱即用的群组。为避免错误,您可以执行以下操作(自定义插件):

将用户控制器复制到项目中以覆盖插件的控制器:

grails s2ui-override user <your-package-for-controller>

从UserController中的插件代码中复制“buildUserModel”并编辑userRoleNames字段:

import grails.plugin.springsecurity.SpringSecurityUtils

class UserController extends grails.plugin.springsecurity.ui.UserController {

  protected Map buildUserModel(user) {
    ...
    // Added so that when using groups doesn't cause an error
    Set userRoleNames
    if (SpringSecurityUtils.securityConfig.useRoleGroups) {
        String groupAuthorityFieldName = SpringSecurityUtils.securityConfig.authority.groupAuthorityNameField
        userRoleNames = user[authoritiesPropertyName].collect { it[groupAuthorityFieldName].collect { it[authorityFieldName] } }
    } else {
        userRoleNames = user[authoritiesPropertyName].collect { it[authorityFieldName] }
    }
    ...
}