Мое определение компонента "запомни меня" выглядит так и отлично работает

<security:remember-me  data-source-ref="dataSource" user-service-ref="userService"/>

Однако в первый раз пользователь регистрируется, и я хочу программно войти в систему и выполнить запоминание. Я не знаю, как получить доступ к услуге «Запомни меня». я могу сделать это

UsernamePasswordAuthenticationToken auth = 
    new UsernamePasswordAuthenticationToken(user, "", authorities);
SecurityContextHolder.getContext().setAuthentication(auth);

HttpServletRequestWrapper wrapper = new HttpServletRequestWrapper(request) {
    @Override public String getParameter(String name) { return "true"; }            
};

Но как получить доступ к сервису «запомнить меня», как показано ниже, если я использую реализацию Spring по умолчанию, а не свой собственный bean-компонент?

getRememberMeServices().loginSuccess(wrapper, response, auth);

Из здесь

ИЗМЕНИТЬ Я изменил определение своего bean-компонента, чтобы он выглядел так

<security:remember-me services-alias="rememberMeService" data-source-ref="dataSource" user-service-ref="userService"/>

Но intellij все еще возвращается с ошибкой, когда я пытаюсь ввести вот так:

@Resource(name = "rememberMeService")
private RememberMeServices rememberMeService;
2
NimChimpsky 9 Фев 2013 в 17:53
Попробуйте заменить свой @Resource на @Inject или @Autowired
 – 
Maksym Demidas
11 Фев 2013 в 13:48

1 ответ

Лучший ответ

Вы можете использовать атрибут services-alias в remember-me элемент пространства имен, чтобы установить псевдоним bean-компонента для RememberMeServices. Затем вы можете вставить эту ссылку в другие bean-компоненты, которые вы создаете сами.

2
Shaun the Sheep 9 Фев 2013 в 19:15
Хорошо, спасибо, я пробовал, но все равно получаю ошибку - см. мою правку?
 – 
NimChimpsky
9 Фев 2013 в 20:31
Для всех остальных, проверка intellij неправильно выделяет это как ошибку: youtrack.jetbrains.com/issue / IDEA-101018
 – 
NimChimpsky
13 Фев 2013 в 18:45