1

我们正在使用 Grails spring 安全插件:

http://grails.org/plugin/spring-security-core

我只是想将默认访问决策管理器从默认的 AffirmativeBased 更改为 UnanimousBased。我在插件手册的任何地方都没有看到它记录:

http://grails-plugins.github.io/grails-spring-security-core/docs/manual/

有谁知道这是否可以改变?

我添加了一个额外的选民“myVoter”,它被检测到并且工作正常。

grails.plugins.springsecurity.voterNames = [
    'myVoter', 'authenticatedVoter', 'roleVoter',
]
4

1 回答 1

0

基于 Burt Beckwith 的“Hacking the Grails Spring Security Plugin” [ http://www.slideshare.net/gr8conf/hacking-the-grails-spring-security-plugins],应该可以简单地提供不同的实现accessDecisionManager bean。像这样的东西:

accessDecisionManager(org.springframework.security.access.vote.UnanimousBased)

在资源.groovy

当我尝试这个时,我遇到了 bean 定义中的构造函数语法问题。访问决策管理器需要构造函数中的投票者列表,我无法引用如何将 config.groovy 中定义的投票者作为构造函数的参数。当我偶然发现 Grails Spring Security Plugin 中 AuthenticatedVetoableDecisionManager 的源代码时,我正要从 UnanimousBased 派生出我自己的决策管理器(带有无参数构造函数)。这个类将选民分成两半......如果任何被拒绝(例如 AUTHENTICATED_FULLY 系列),从 AuthenticatedVoter 派生的任何东西都将立即失败,但如果任何其他选民被授予(例如 RoleVoter),则所有其他选民将通过。

于 2014-12-12T19:48:36.353 回答