2013-02-09 65 views
2

我记得,我bean定义是这样的,并且工作正常程序化记得,我与春天secruity

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

然而,用户第一次注册,我想以编程方式记录他们并执行一记-我。我不知道如何访问Remember-me服务。我能做到这一点

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

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

但是如何访问记住我服务象下面这样,因为我使用的是默认的弹簧实现,而不是我自己的豆?

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

here

编辑 我已经改变了我的bean定义看起来像这样

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

不过的IntelliJ仍然回来同一个错误,当我尝试这样的注入:

@Resource(name = "rememberMeService") 
private RememberMeServices rememberMeService; 
+0

试着替换_ @ Resource_ by _ @ Inject_或_ @ Autowired_ – 2013-02-11 09:48:05

回答

2

您可以使用remember-me namespace elementservices-alias属性为RememberMeServices设置bean别名。然后,您可以将该引用注入到您自己创建的其他bean中。

+0

好的谢谢,我试过但仍然出现错误 - 请参阅我的编辑? – NimChimpsky 2013-02-09 16:31:50

+0

对于那里的其他人,intellij检查不正确地将此错误突出显示为一个错误:http://youtrack.jetbrains.com/issue/IDEA-101018 – NimChimpsky 2013-02-13 14:45:23