0
我們使用的是Spring Security版本4.默認情況下,匿名用戶擁有ROLE_ANONYMOUS
分配。Spring Security定義了一個定製的匿名過濾器
我們想爲匿名用戶添加更多角色。
我試圖延長AnonymousAuthenticationFilter
並將其添加到如下春季安全方面:
<http entry-point-ref="authenticationEntryPoint">
<custom-filter ref="sabaAnonymousAuthenticationFilter" position="ANONYMOUS_FILTER"/>
<anonymous enabled="false"/>
.....
<beans:bean id="sabaAnonymousAuthenticationFilter"
class="foo.bar.CustomAnonymousAuthenticationFilter">
<beans:constructor-arg index="0" value="SomeUniqueKeyForThisApplication"/>
</beans:bean>
和類:
public class CustomAnonymousAuthenticationFilter extends AnonymousAuthenticationFilter {
@Inject
HelperClass aHelperClass;
public CustomAnonymousAuthenticationFilter(String key) {
super(key);
getAuthorities().add(new SimpleGrantedAuthority("ROLE_FOO_BAR"));
......
}
}
上面的代碼改變匿名角色,並添加ROLE_FOO_BAR
,但我在此過濾器中不能使用@Inject
或@Autowire
其他Spring bean。
請讓我知道:
- 這是定義自定義過濾匿名的正確方法?
- 我怎樣才能
authowire
其他豆在這裏?
我用同樣的方法來定義自定義UserDetailsService
和autowire
在那裏工作。
謝謝,但我需要我自己的類,因爲'roles'不能用xml進行硬編碼,並且應該從文件中讀取。 –
也許這篇文章http://stackoverflow.com/questions/32494398/unable-to-autowire-the-service-inside-my-authentication-filter-in-spring將解決您的autowire問題。 – Compito