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