我正在尝试在Spring中设置一个请求范围的bean.
我已成功设置它,因此每次请求都会创建一次bean.现在,它需要访问HttpServletRequest对象.
由于每次请求都会创建一次bean,因此我认为容器可以很容易地在我的bean中注入请求对象.我怎样才能做到这一点 ?
在Spring和Spring Security 3.1中以特定用户名编程登录Web访问者的正确方法是什么?看起来我在2.5下做的方式已经改变了一点.我相信现在有更好的方法可以做到这一点.
基本上,当我创建一个新用户时,我还需要同时登录它们.
注册(注册)后,我通过Spring Security以编程方式登录我的用户:
public register(HttpServletRequest request, String user, String password) {
...
request.login(user, password);
}
Run Code Online (Sandbox Code Playgroud)
这工作正常,但它不会创建记住我的cookie(尽管使用交互式登录可以很好地创建cookie).
现在我已经阅读了这个和这个答案,你必须连接RememberMeServices(我使用PersistentTokenBasedRememberMeServices)的实现,然后调用onLoginSuccess.我没有成功自动装配PersistentTokenBasedRememberMeServices.
如何使这项工作?这是正确的方法吗?为什么Spring Security不提供更方便的方式?
PS:这是我配置的摘录:
@Configuration
@EnableWebSecurity
public class WebSecConf extends WebSecurityConfigurerAdapter {
...
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.rememberMe()
.tokenRepository(new MyPersistentTokenRepository())
.rememberMeCookieName("rememberme")
.tokenValiditySeconds(60 * 60 * 24)
.alwaysRemember(true)
.useSecureCookie(true)
.and()
....
...
}
}
Run Code Online (Sandbox Code Playgroud)