Spring Security: Как настроить имя параметра запроса запомнить? - PullRequest
2 голосов
/ 28 декабря 2011

Я использую password-parameter (как показано ниже), чтобы настроить имя параметра запроса, который содержит пароль. Как сделать то же самое с запомнить меня (по умолчанию _spring_security_remember_me)?

<security:form-login password-parameter="j_password_input" ... />

Ответы [ 2 ]

5 голосов
/ 28 декабря 2011

У вас есть несколько вариантов, которые я объяснил более подробно ниже

  • Использование пространства имен безопасности с 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>
0 голосов
/ 27 мая 2014

Начиная с Spring Security 3.2.x, вы можете установить это с помощью параметра remember-me-parameter в элементе remember-me.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...