如何使用 Angular 和 Spring Boot 添加社交登录功能

Posted

技术标签:

【中文标题】如何使用 Angular 和 Spring Boot 添加社交登录功能【英文标题】:How to add social login functionality using angular and spring boot 【发布时间】:2020-07-02 20:56:10 【问题描述】:

如何在 Angular 和 Spring Boot 应用程序中添加社交登录功能。我在 Google 上搜索了很多次,但没有得到适当的指导。如果有人已经这样做了,请告诉我。

【问题讨论】:

【参考方案1】:

您可以使用Firebase Auth 为您的应用提供社交登录功能。通过 AngularFire 库可以轻松与 Angular 集成。

请参阅official doc 进行身份验证。

import  Component  from '@angular/core';
import  AngularFireAuth  from '@angular/fire/auth';
import  auth  from 'firebase/app';

@Component(
  selector: 'app-root',
  template: `
    <div *ngIf="auth.user | async as user; else showLogin">
      <h1>Hello  user.displayName !</h1>
      <button (click)="logout()">Logout</button>
    </div>
    <ng-template #showLogin>
      <p>Please login.</p>
      <button (click)="login()">Login with Google</button>
    </ng-template>
  `,
)
export class AppComponent 
  constructor(public auth: AngularFireAuth) 
  
  login() 
    this.auth.signInWithPopup(new auth.GoogleAuthProvider());
  
  logout() 
    this.auth.signOut();
  

然后在后端,通过 Spring Boot,您可以通过验证从您的 Angular 应用收到的令牌来使用 JWT 无状态身份验证。

我建议您阅读my answer 以了解类似问题。该案例的重点是 Google 登录,但主线类似。

大体思路是:*

前端通过 Firebase Auth(使用 AngularFire 库)对用户进行身份验证 前端应用检索身份验证令牌作为 JWT 令牌 前端随每个 HTTP 请求发送 JWT 令牌(带有授权标头) 后端为每个请求检索 JWT,验证其签名,并获取有效负载属性(电子邮件、ID...) 然后,后端检查用户数据库中的“email”或“id”以允许或不允许请求。

一些资源

Google Sign-In with Backend Verification Flow Clarification 关于 SO 的问题,我的回答 The Purpose of JWT: Stateless Authentication Stateless Sessions for Stateful Minds: JWTs Explained

【讨论】:

【参考方案2】:

检查这可能对某人有帮助

https://www.javainuse.com/spring/spring-social

我有现有的使用 JWT 令牌和 Spring boot 的登录系统,所以我仅将 Facebook 登录用于身份验证目的

【讨论】:

以上是关于如何使用 Angular 和 Spring Boot 添加社交登录功能的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 keycloak 保护 angular/spring 应用程序?

如何使用 Angular 和 Spring Boot 添加社交登录功能

如何保护 Angular 和 Spring 应用程序

如何使用spring boot和angular 2登录

如何使用 Angular + Spring + JSON 自定义登录/身份验证

如何使用 Rest 和 Spring 安全性通过 ldap 登录 Angular?