Java Angular 6和spring boot使用基于会话的登录记住我

Java Angular 6和spring boot使用基于会话的登录记住我,java,angular,spring-boot,Java,Angular,Spring Boot,目前,在我们的spring boot应用程序中,我们正在基于HeaderHttpSessionStrategy(基于会话的身份验证)对用户进行身份验证。试图添加“记住我”功能,但spring并没有将用户存储到持久登录中,也没有在客户端创建cookie 我补充说 //this line added to HttpSecurity object .and().rememberMe().rememberMeParameter("rememberMe") .tokenRepository(persis

目前,在我们的spring boot应用程序中,我们正在基于HeaderHttpSessionStrategy(基于会话的身份验证)对用户进行身份验证。试图添加“记住我”功能,但spring并没有将用户存储到持久登录中,也没有在客户端创建cookie

我补充说

//this line added to HttpSecurity object 
.and().rememberMe().rememberMeParameter("rememberMe")
.tokenRepository(persistentTokenRepository())
.tokenValiditySeconds(86400)

@Bean
public DataSource getDataSource() {
    DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
    dataSourceBuilder.driverClassName("${db.driver}");
    dataSourceBuilder.url("${db.url}");
    dataSourceBuilder.username("${db.username}");
    dataSourceBuilder.password("${db.password}");
    return dataSourceBuilder.build();
}

@Bean
public PersistentTokenRepository persistentTokenRepository() {
    JdbcTokenRepositoryImpl jdbcTokenRepository = new JdbcTokenRepositoryImpl();
    jdbcTokenRepository.setDataSource(getDataSource());
    return jdbcTokenRepository;
}
我们使用Angular 6作为前端客户端,所以在身份验证端点的Post方法中发送rememberMe头

请向某人推荐我这里缺少的东西。
提前感谢

在深入了解“记住我”身份验证之后,我能够实现该功能。 这本书的作者必须受到表扬

仅此链接就足以用于后端部分

说到angular 6,将响应读作ResponseEntity,这样它就会自动为您创建一个cookie。(如果您有从auth端点接收的数据,那么将它们添加到响应头中,在组件中将它们作为
data.headers.get('some\u header\u from\u api')读取。

getToken(用户名:string,密码:string,记住:string){
让httpHeaders=新的httpHeaders({
“缓存控制”:“无缓存”,
“X-request-With':“XMLHttpRequest”,
“授权”:“基本”+btoa(用户名+:“+密码),
});
返回this.http.get(this.BASE_URL+”?rememberchecked=“+rememberMe,{headers:httpHeaders,withCredentials:true,注意:'response'});
}
就这样。等等,如果您正在考虑如何在每个请求中发送“记住我”cookie,实际上,您不需要做任何额外的工作,angular会自动为您添加cookie

  getToken(username:string,password:string,rememberMe:string){
     let httpHeaders = new HttpHeaders({
       'Cache-Control': 'no-cache',
       'X-Requested-With': 'XMLHttpRequest',
       'Authorization': 'Basic '+ btoa(username +':'+ password),

     });
     return this.http.get<HttpResponse<Object>>(this.BASE_URL+"?rememberMeChecked="+rememberMe,{ headers: httpHeaders,withCredentials: true,observe: 'response'});
   }