大家:
我怎样才能获得ExceptionTranslationFilter的BeanDefinition在3.0.x和3.1.X产生的?我想重用它PropertyValue的BeanDefinition(accessDeniedHandler和authenticationEntryPoint).我发现我无法DefaultListableBeanFactory通过bean名称或类来获取它,似乎没有注册ExceptionTranslationFilter的BeanDefinition.
其他类似的过滤器UsernamePasswordAuthenticationFilter,它有一个bean名称:org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter#0.但ExceptionTranslationFilter没有一个.
我找到的唯一方法是迭代搜索filterChainProxy的属性,有没有更好的方法?
我在psuedo代码中做了什么:
BeanDefinitionBuilder builder =
BeanDefinitionBuilder.rootBeanDefinition(MyExceptionFilter.class);
RootBeanDefinition exceptionTranslationFilter = getExceptionTranslationFilterBeanDefinition();
PropertyValue accessDeniedHandler = exceptionTranslationFilter.getPropertyValues().getPropertyValue("accessDeniedHandler");
Object handler = (RootBeanDefinition) accessDeniedHandler.getValue();
builder.addPropertyValue("accessDeniedHandler", handler);
beanDefinitionRegistry.registerBeanDefinition("myFilter", builder.getBeanDefinition());
Run Code Online (Sandbox Code Playgroud)
所以,真正的问题是获取核心过滤器ExceptionTranslation的accesDeniedHandler的最佳方法是什么BeanDefinition
因为您无法更改ExceptionTranslationFilter实施或有权访问它:
每个
<http>命名空间块总是创建一个SecurityContextPersistenceFilter,一个ExceptionTranslationFilter和一个FilterSecurityInterceptor.这些是固定的,不能替代替代品.
您应该使用"传统"bean FilterChainProxy(使用命名空间代理的名称"springSecurityFilterChain")或ExceptionTranslationFilter通过明确定义它们并在<http>以下位置引用它们来获取对属性的访问权限:
<http entry-point-ref="authenticationEntryPoint">
<access-denied-handler ref="accessDeniedHandler" />
<!-- other options -->
</http>
<bean:bean id="authenticationEntryPoint"
class="org.springframework.security.web.authentication.LoginUrlAuthenticationEntryPoint">
<bean:property name="loginFormUrl" value="/login.htm"/>
</bean:bean>
<bean:bean id="accessDeniedHandler"
class="org.springframework.security.web.access.AccessDeniedHandlerImpl">
<bean:property name="errorPage" value="/accessDenied.htm" />
</bean:bean>
Run Code Online (Sandbox Code Playgroud)
AuthenticationEntryPoint根据文档,实现的设置取决于已配置的身份验证机制,因此请选择一个您需要的身份验证机制.
| 归档时间: |
|
| 查看次数: |
6535 次 |
| 最近记录: |