我有一个Spring Config工作正常。我的Spring Config使用多个security:http
部分。
定义security:http
部分时,某些操作会自动发生,例如某些bean定义。其中一个自动定义的bean是SessionAuthenticationStrategy
- 实现bean。
问题:你怎么能确定哪个是哪个?例如,我需要通过@Autowired
从代码中引用特定的身份验证策略,该策略在特定的http:security
标记中定义;我怎么能做到这一点?
答案 0 :(得分:1)
在自定义bean和SessionAuthenticationStrategy
内部生成相同<sec:http>
实例的一种方法是生成相反的方向:明确定义SessionAuthenticationStrategy
并将其注入任何您想要的位置,包括http
配置:
<bean id="fancySessionAuthStrategy" class="com.fancy.FancySessionAuthStrategy">
...
</bean>
<sec:http ...>
<sec:session-management session-authentication-strategy-ref="fancySessionAuthStrategy"/>
...
</sec:http>
这里唯一的问题是您必须手动构建该策略bean定义。
示例可以在文档中找到:http://docs.spring.io/spring-security/site/docs/current/reference/html/session-mgmt.html