gpt4 book ai didi

grails - 在 Grails Spring Security 插件中将 AccessDecisionManager 更改为 UnanimousBased

转载 作者:行者123 更新时间:2023-12-02 14:53:05 24 4
gpt4 key购买 nike

我们正在使用 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',
]

最佳答案

基于 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),则所有其他选民都将通过。我想为我的自定义选民提供 AuthenticatedVoter 功能,所以我只是从 AuthenticatedVoter 派生(确保覆盖所有接口(interface)方法,以免意外获得任何基类功能)并坚持使用默认决策管理器。

关于grails - 在 Grails Spring Security 插件中将 AccessDecisionManager 更改为 UnanimousBased,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18596358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com