8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

Spring Boot Starter OAuth2 客户端 - 如何在浏览器关闭后保持用户身份验证 [ google oauth2 ]

Adeel Ansari 2月前

21 0

我有一个 Spring Boot 后端,它使用 spring-boot-starter-oauth2-client 来为我的网站建立一个 google oauth2 登录系统。这是 SecurityFilterChain,当用户使用 go 登录时...

我有一个 Spring Boot 后端,它使用 spring-boot-starter-oauth2-client 来为我的网站建立 google oauth2 登录系统。

这是 SecurityFilterChain,当用户使用 Google 登录时,它会将用户添加到我的数据库中。GoogleOAuth2 用户是我创建的自定义 OAuth2User,可以更轻松地公开 \'email\' 等属性。

@Bean
    public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
        http
                .csrf(csrf -> csrf.disable())

                .authorizeHttpRequests(auth -> auth
                        .requestMatchers("/",  "/oauth/**").permitAll()
                        .anyRequest().authenticated()
                )
                .oauth2Login(oauth2Login -> oauth2Login
                        .userInfoEndpoint(userInfoEndpoint -> userInfoEndpoint
                                .userService(googleOAuth2UserService)
                        )
                        .successHandler(new AuthenticationSuccessHandler() {
                            @Override
                            public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication)
                                throws IOException, ServletException {

                                GoogleOAuth2User googleOAuth2User = (GoogleOAuth2User) authentication.getPrincipal();
                                userService.processOAuthPostLogin(googleOAuth2User);
                                response.sendRedirect("http://localhost:3000");
                            }
                        })
                );

        return http.build();
    }

然后我有一个端点,我的经过身份验证的客户端会调用该端点来检查它是否已登录

@GetMapping(path = "/authenticated")
    public User getAuthenticatedUser(@AuthenticationPrincipal GoogleOAuth2User principal) {
        return userService.getAuthenticatedUser(principal);
    }

在前端,我有一个按钮可以转到 google oauth2 页面。

<div>
        With Google: <a href="http://localhost:8080/oauth2/authorization/google">click here</a>
      </div>

但是,我在这里遇到的问题是客户端仅在当前浏览器会话中进行身份验证。当我关闭浏览器并重新打开它时,客户端再次退出并且未进行身份验证。如何持久化会话,以便我的用户在浏览器关闭后仍然处于“登录”状态?

帖子版权声明 1、本帖标题:Spring Boot Starter OAuth2 客户端 - 如何在浏览器关闭后保持用户身份验证 [ google oauth2 ]
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Adeel Ansari在本站《java》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 好吧,显然这很简单。它不需要 spring session 或任何东西。只需将其添加到您的 application.properties 中即可

    server.servlet.session.cookie.max-age=3600
    

    3600 = cookie 持续 1 小时

返回
作者最近主题: