【问题标题】:Grails Spring Security UI Plugin - Does It Support Groups?Grails Spring Security UI 插件 - 它支持组吗?
【发布时间】:2018-01-02 21:06:33
【问题描述】:

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

【问题讨论】:

    标签: grails spring-security


    【解决方案1】:

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

    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
    

    我很好奇你是否找到了解决方法?否则我们将不得不自定义插件。

    【讨论】:

      【解决方案2】:

      正如 Julian 指出的那样,UI 不提供开箱即用的组支持。为避免该错误,您可以执行以下操作(自定义插件):

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

      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] }
          }
          ...
      }
      

      【讨论】:

        猜你喜欢
        • 2016-05-24
        • 2011-08-15
        • 2016-03-23
        • 2012-09-29
        • 2014-01-05
        • 2012-05-24
        • 2012-12-10
        • 2014-11-06
        • 2014-03-08
        相关资源
        最近更新 更多