请注意:似乎有人在不加解释地连续提出我的问题。这个问题是关于主题的,不是重复的,展示了研究成果并提供了sscce。如果你想dv或cv它,这是很好的,但请提供一个评论,为什么这样我可以有机会解决您的关注。。。
这里有spring boot 2.3.x和spring security。
我有一些相当复杂的授权逻辑,因此我相信我需要编写自己的授权逻辑 AccessDecisionManager
impl并将其连接到我的 WebSecurityConfigurerAdapter
impl(如果这是错误的或有任何误解,请纠正我!)。
那么,实现您自己的 AccessDecisionManager
您需要实现3种方法,其中之一是:
public class MyCustomAccessDecisionManager implements AccessDecisionManager {
@Override
public void decide(
Authentication authentication,
Object object,
Collection<ConfigAttribute> configAttributes) throws AccessDeniedException, InsufficientAuthenticationException {
// TODO
}
}
我到处搜寻谷歌神灵,就我的一生而言,我找不到一个有意义的真实世界的例子来说明 Object object
及 Collection<ConfigAttribute> configAttributes
参数是,它们是用来做什么的,它们是如何被使用的,以及在运行时它们的一些真实世界(具体)示例是什么。
这个 Authentication
参数很明显:它是我的身份验证令牌,将包含主体,可能是他们的凭证,以及一个身份验证的列表 GrantedAuthorities
(权限)与主体关联。
但是另外两个论点( object
及 configAttributes
)对我来说是绝对的秘密。
有人知道这些论点是什么,它们的一些实际用例是什么,以及它们打算如何使用吗?
1条答案
按热度按时间ddhy6vgd1#
作为javadoc的
AccessDecisionManager
说:object–被调用的安全对象
通常,它是
MethodInvocation
接口,它表示应为其执行调用安全决策的方法。configattributes—与被调用的安全对象关联的配置属性
它是与安全对象(方法)相关的元数据属性的集合。例如,它可以包含与此方法相关的注解的信息,例如
@PermitAll
,@PreAuthorize
,@PostFilter
等