2

我对 spring 很陌生,让 spring 安全性更不用说了,我一直在查看 Schema 文件,并注意到<jee>出现在标签下的<http>标签就像某种 preauth 过滤器魔法。使用mappable-roles属性,我可以获得我想要的角色,但是,当我指定一个不同的user-service-ref属性,指定一个UserDetailsService对象时,我失去了角色。

我的猜测是因为当我指定UserDetailsService对象时,Spring 假定我不再需要该角色......但我需要!

对此有什么想法吗?我能以某种方式捕捉这些细节吗?如果不使用这个简单<jee>的标签,那么jee标签会扩展为custom-filters 和 pre-auth 等什么?

4

1 回答 1

2

<jee>标签创建(除其他外)一个PreAuthenticatedAuthenticationProviderbean,该 bean 委托给已配置的策略以加载用户详细信息。

此策略的默认实现PreAuthenticatedGrantedAuthoritiesUserDetailsService将简单地复制它在身份验证令牌中找到的角色。

UserDetailsService通过使用您的自定义属性覆盖此默认策略,您user-service-ref负责为用户分配角色。如果您想保留有关用户角色的默认行为,您可以简单地从上述类中复制相关行,因为 Java EE 角色仍然被映射,并且也可以在 auth 令牌中访问您自己的代码。

于 2013-04-12T07:07:04.270 回答