我使用password-parameter (如下所示)定制包含密码的请求参数的名称。如何对remember-me (默认_spring_security_remember_me)做同样的事情?
<security:form-login password-parameter="j_password_input" ... />发布于 2011-12-29 02:16:11
您有几个选项,我在下面对这些选项进行了详细解释
通过BeanPostProcessor
将安全命名空间与BeanPostProcessor一起使用
名称空间不支持配置记住我参数,但是您可以使用FAQ中有关如何仍然使用名称空间支持的提示,但可以自定义结果。诀窍是使用BeanPostProcessor在AbstractRememberMeServices上设置参数字段。你可以在下面找到一个这样的例子:
public class MyBeanPostProcessor implements BeanPostProcessor {
public Object postProcessAfterInitialization(Object bean, String name) {
if (bean instanceof AbstractRememberMeServices) {
AbstractRememberMeServices rememberMe = (AbstractRememberMeServices) bean;
rememberMe.setParameter("myParamname");
}
return bean;
}
public Object postProcessBeforeInitialization(Object bean, String name) {
return bean;
}
}然后,您需要像往常一样使用名称空间,并将MyBeanPostProcessor添加到Spring配置中,如下所示:
<security:http ..>
...
<security:remember-me/>
</security:http>
<bean class="sample.MyBeanPostProcessor"/>使用服务-ref并手动配置RememberMeServices
您也可以使用services-ref属性,但这涉及到更多的配置。例如,如果需要,可以使用以下配置:
<security:http ..>
...
<security:remember-me services-ref="rememberMeServices"/>
</security:http>
<bean id="rememberMeServices"
class="org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices">
<property name="key" value="mustMatchRememberMeAuthenticationProvidersKey"/>
<property name="parameter" value="myParamName"/>
<!-- You must refer to a bean that implements UserDetailsService
in this example the bean id is userDetailsService -->
<property name="userDetailsService" ref="userDetailsService"/>
</bean>发布于 2014-05-27 22:56:13
从Spring Security3.2.x开始,您可以在remember-me元素上使用remember-me-parameter参数设置它。
https://stackoverflow.com/questions/8653455
复制相似问题