spring安全会话域

7cjasjjr  于 2021-06-30  发布在  Java
关注(0)|答案(1)|浏览(279)

我和我的朋友正在为大学实践制作一个JavaSpringBoot应用程序。它的前端在firebase上,api在heroku上
问题如下,我将spring security配置为:

@Override
protected void configure(final HttpSecurity http) throws Exception {
    http.cors().and().csrf().disable()
            .authorizeRequests()
            .antMatchers("/admin/**", "/bid/getBids", "/bid/{id}", "/purchase/create",
                    "/purchase/{id}", "/purchase/question/{questionId}/answer").hasAuthority("ROLE_ADMIN")
            .antMatchers("/registration/**", "/registration").permitAll()
            .anyRequest().authenticated()
            .and()
                .httpBasic()
            .and()
            .formLogin()
            .permitAll()
            .and()
            .logout()
            .logoutSuccessUrl("/").deleteCookies("JSESSIONID")
            .invalidateHttpSession(true);
}

当我通过swagger/postman在heroku上测试api时,一切正常,包括角色限制。
但是当它试图通过/login路径设置授权时,它会重定向到swaggerui页面,因为我就是这样设置的。我在firebase上重写了重定向到它的主页,但是会话没有这样工作,显然是因为cookies被保存到我在heroku上的应用程序地址。
请告诉我如何配置Spring Security ,以便其站点在授权期间保存用户会话,并且该站点使用我的api正常工作?
有些短语我用翻译,对不起

66bbxpm5

66bbxpm51#

您的前端和后端应用程序在不同的域上提供服务,并且只存储特定域的http cookie信息。因此,我认为通过将spring引导应用程序的src/resources/static放在下面,您可以很容易地为静态页面(或单页应用程序资源)提供服务。通过这样做,您还可以限制前端应用程序,只允许授权用户使用。如果您想在firebase上为前端应用程序提供服务,而在heroku上为后端应用程序提供服务,您应该通过在firebase.json文件中配置重写规则将其转发到上游主机(https://firebase.google.cn/docs/hosting/full-config?authuser=0#rewrites).

相关问题