У вас есть несколько вариантов, которые я объяснил более подробно ниже
- Использование пространства имен безопасности с BeanPostProcessor
- Используйте services-ref и настройте RememberMeServices вручную
Использование пространства имен безопасности с 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"/>
Используйте services-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>