程序化记住我与春天安全

时间:2013-02-09 13:53:22

标签: java spring spring-security remember-me

我记得我的bean定义看起来像这样,并且工作正常

<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"; }            
};

但是如何访问下面的remember-me服务,因为我使用的是默认的spring实现而不是我自己的bean?

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;

1 个答案:

答案 0 :(得分:2)

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