ngx-auth-firebaseui

ngx-auth-firebaseui

Angular Material UI组件库用于Firebase身份验证

ngx-auth-firebaseui是一个开源Angular库,提供Material Design风格的Firebase身份验证UI组件。该库支持多种登录方式,包括电子邮件、Google和Facebook等,并具备用户管理功能。它易于集成,支持国际化,可与Firestore同步,为开发者提供完整的身份验证解决方案。该库整合了Firebase身份验证服务和Angular Material设计,简化了开发流程。它支持多种身份验证方式,提供用户管理界面,并可与Firestore数据库同步。ngx-auth-firebaseui的易用性和功能完整性,使其成为Angular项目中实现Firebase身份验证的理想选择。

AngularFirebase认证开源库用户界面Github开源项目
<p align="center"> <img height="256px" width="256px" style="text-align: center;" src="https://cdn.jsdelivr.net/gh/anthonynahas/ngx-auth-firebaseui@master/assets/angular-material-extensions-logo.svg"> </p>

ngx-auth-firebaseui - 用于Angular Web应用的开源库,集成了Firebase认证的Material用户界面

npm版本 演示 文档: typedoc codecov CircleCI分支 加入Gitter聊天室 npm Greenkeeper徽章 许可证 GitHub分叉 GitHub星标 GitHub关注者 Twitter链接 Twitter关注 Awesome

用于firebase认证的Angular UI组件。 这个库是一个Angular模块(包含Angular组件和服务),允许您使用Firebase项目对用户进行身份验证。NgxAuthFirebaseUI与angular materialangular flexLayout兼容。

如果您更喜欢使用bootstrap而不是material design进行开发,请查看这个项目@firebaseui/ng-bootstrap

由开发者为开发者而构建 :heart:

您有任何问题或建议吗?请不要犹豫,联系我们! 或者,提供PR | 在这里开启适当的问题

如果您喜欢这个项目,请通过加星:star:和分享:loudspeaker:来支持ngx-auth-firebaseui

目录

<a name="vs"/>

ngx-auth-firebaseui vs firebaseui-web

功能ngx-auth-firebaseuifirebaseui
注册:heavy_check_mark::heavy_check_mark:
登录:heavy_check_mark::heavy_check_mark:
匿名登录:heavy_check_mark::heavy_check_mark:
谷歌登录:heavy_check_mark::heavy_check_mark:
苹果登录:heavy_check_mark::heavy_check_mark:
Facebook登录:heavy_check_mark::heavy_check_mark:
Twitter登录:heavy_check_mark::heavy_check_mark:
Github登录:heavy_check_mark::heavy_check_mark:
微软登录:heavy_check_mark::heavy_check_mark:
雅虎登录:heavy_check_mark::heavy_check_mark:
手机号登录:x::heavy_check_mark:
退出登录:heavy_check_mark::x:
登录/注册进度指示器:heavy_check_mark::x:
密码强度指示器:heavy_check_mark::x:
忘记/重置密码:heavy_check_mark::x:
密码强度计:heavy_check_mark::x:
删除账户:heavy_check_mark::x:
登录认证守卫:heavy_check_mark::x:
用户资料:heavy_check_mark::x:
检查用户邮箱是否已验证:heavy_check_mark::x:
编辑用户显示名称(包括验证):heavy_check_mark::x:
编辑用户邮箱(包括验证):heavy_check_mark::x:
编辑用户手机号(包括验证):heavy_check_mark::x:
在运行时配置您喜欢的认证提供商:heavy_check_mark::x:
将用户认证与Firestore同步 了解更多:heavy_check_mark::x:
动画效果:heavy_check_mark::x:
兼容Angular v2-13:heavy_check_mark::x:
国际化(i18n):heavy_check_mark::heavy_check_mark:
Ionic/cordova支持:soon: @firebaseui/ionic-auth:x:
实时表单验证:heavy_check_mark::x:
易于集成:heavy_check_mark::x:
支持服务器端渲染:heavy_check_mark::x:
无需额外配置即可支持SPA:heavy_check_mark::x:
支持Safari隐私浏览:heavy_check_mark::interrobang:
超赞:heavy_check_mark::interrobang:
<a name="why-to-use-ngx-auth-firebaseui"/>

为什么使用ngx-auth-firebaseui?

  • :gift_heart: 它使用了基于Google Material概念和组件的响应式和无障碍Web设计UX/UI(支持桌面、平板和移动视图),包括流畅的动画,以提供更好的用户体验。
  • :lipstick: 选择您自己的主题!随时更改主要、强调和警告颜色(例如支持浅色和深色主题)
  • :ship: 非常易于在基于Angular的项目中使用(使用angular-cli创建的项目)
  • :soon: 可选配置
  • :recycle: 在运行时配置您的认证提供商
  • :recycle: 为每个需要Firebase项目/应用认证的项目提供可重用组件。
  • :customs: 内置反馈机制,以snackbar的形式在发生错误或任何重要事件时提供反馈。
  • :sos: 能够退出登录,甚至完全删除账户
  • :ghost: 您的客户不想在您的项目中创建账户?让他匿名登录!
  • :busts_in_silhouette: 用户资料组件,通过<ngx-auth-firebaseui-user></ngx-auth-firebaseui-user>使用ngx-auth-firebaseui-user显示用户数据
  • :zap: 更新用户资料功能
  • :fire: 自动将用户认证与FIRESTORE同步
  • :muscle: 忘记密码功能!让您的用户轻松找回密码
  • :tada: 支持SSR - 服务器端渲染
  • 支持i18n
<a name="components"/>

库组件

  • <ngx-auth-firebaseui> 用于认证过程 了解更多
  • <ngx-auth-firebaseui-register> 独立的注册组件,用于创建新账户 了解更多
  • <ngx-auth-firebaseui-login> 独立的登录组件,用于使用已创建的账户 了解更多
  • <ngx-auth-firebaseui-providers> 用于仅显示Google、Facebook、Twitter、Github、微软和雅虎等提供商的按钮 了解更多
  • <ngx-auth-firebaseui-user> 用于以Material卡片形式显示/编辑当前已认证用户的数据 了解更多
  • <ngx-auth-firebaseui-avatar> 用于在工具栏中显示/编辑当前已认证用户的数据 了解更多
<a name="supported-providers"/>

支持的提供商:

  • 匿名
  • 邮箱和密码(传统方式)
  • 谷歌
  • 苹果
  • Facebook
  • Twitter
  • Github
  • 微软
  • 雅虎
  • 手机号 :soon:
<a name="supported-procress-and-actions"/>

支持的流程和操作:

  • 注册
  • 登录
  • 匿名登录 | 使用谷歌、苹果、Facebook、Twitter、Github、微软、雅虎登录
  • 退出登录
  • 创建新账户时使用@angular-material-extensions/password-strength验证密码强度
  • 忘记/重置密码
  • 发送邮箱验证
  • 删除用户账户
  • 编辑用户资料,如邮箱、姓名、(头像 :soon:)和手机号
  • Firestore自动同步 :fire:
  • 在检查服务条款和隐私政策之前不允许用户创建新账户 - 更多信息请查看这里

支持的Angular守卫

  • LoggedInGuard 用于保护Angular路由不被未认证用户访问(通过NgxAuthFirebaseUIConfig配置回退路由)
<a name="requirements"/> - [Angular Material 主题](https://material.angular.io/guide/getting-started#step-4-include-a-theme) - [Angular Material 图标](https://material.angular.io/guide/getting-started#step-6-optional-add-material-icons)

完整的教程指南可以在这里找到

演示 | 功能 | 示例

查看与Firestore同步的实时示例点击这里


截图 - 浏览器 <ngx-auth-firebaseui></ngx-auth-firebaseui>

  • 登录
<p align="center"> <img alt="ngx-auth-firebaseui 登录" width="384px" style="text-align: center;" src="assets/v3.0.0/demo.png"> </p>

ngx-auth-firebaseui-user 组合使用

<p align="center"> <img alt="ngx-auth-firebaseui 登录" width="384px" style="text-align: center;" src="assets/v3.0.0/demo_full.png"> </p>
  • 注册

之前

<p align="center"> <img alt="ngx-auth-firebaseui 注册" width="384px" style="text-align: center;" src="assets/v1.0.0/png/register_filled_2.png"> </p>

之后

<p align="center"> <img alt="ngx-auth-firebaseui 注册" width="384px" style="text-align: center;" src="assets/v3.4.0/email_verification.png"> </p>

演示外观

<p align="center"> <img alt="ngx-auth-firebaseui 注册" width="384px" style="text-align: center;" src="assets/v1.0.0/png/registration_full.png"> </p>

截图 <ngx-auth-firebaseui-provider></ngx-auth-firebaseui-providers>

行布局

请注意:当视口变得太小时,布局将自动更改为

<p align="center"> <img alt="ngx-auth-firebaseui 注册" width="384px" style="text-align: center;" src="assets/v3.0.0/providers_column.png"> </p>

<ngx-auth-firebaseui-user></ngx-auth-firebaseui-user> | 用户资料

登录时

<p align="center"> <img alt="ngx-auth-firebaseui 用户资料组件" width="384px" style="text-align: center;" src="assets/v1.0.0/png/user.png"> </p>

编辑模式

<p align="center"> <img alt="ngx-auth-firebaseui 编辑用户组件" width="384px" style="text-align: center;" src="assets/v1.0.0/png/user_edit_mode.png"> </p>

截图 - 重置密码

  • 之前
<p align="center"> <img alt="移动端的ngx-auth-firebaseui" width="384px" style="text-align: center;" src="assets/v1.0.0/png/forgot_password0.png"> </p>
  • 之后
<p align="center"> <img alt="移动端的ngx-auth-firebaseui" width="384px" style="text-align: center;" src="assets/v1.0.0/png/forgot_password_sent.png"> </p>

截图 - i18n - 多语言

<p align="center"> <img alt="移动端的ngx-auth-firebaseui" width="384px" style="text-align: center;" src="assets/v2.7.0/2.gif"> </p>

对等依赖 - 如果您没有使用schematics,请确保安装了对等依赖

"peerDependencies": { "@angular/core": "^13.x", "@angular/animations": "^13.x", "@angular/cdk": "^13.x", "@angular/flex-layout": "^13.0.0-beta.38", "@angular/forms": "^13.x", "@angular/material": "^13.x", "@angular/fire": "7.x", "firebase": "9.x", }

注意:

  • v1.x 应与 angular v7 项目一起使用
  • v3.x 应与 angular v8 项目一起使用
  • v4.x 应与 angular v9/10 项目一起使用
  • v5.x 应与 angular v11 项目一起使用
  • v6.x 应与 angular v12/13 项目一起使用
  • v7.x 应与 angular v14 项目一起使用

需要帮助!


依赖

@angular-material-extensions/password-strength 用于在注册新的 firebase 用户时指示提供的密码有多安全,例如:

<p align="center"> <img width="384px" style="text-align: center;" src="assets/v0.7.1****/features/password/ngx-material-password-strength.gif"> </p>

(1) 安装

1. 通过 ng add 安装。(推荐)

如果尚未设置 Angular Material Design,只需运行 ng add @angular/material 了解更多

现在通过 angular schematics 添加库

ng add ngx-auth-firebaseui
  • :heavy_check_mark: 对等依赖将自动添加到 package.json 并安装
  • :heavy_check_mark: ngx-auth-firebaseui 的模块将自动导入到根模块(只需将 PUT_YOUR_FIREBASE_API_KEY_HERE 替换为您的 firebase api 密钥)
  • :heavy_check_mark: ngx-auth-firebaseui 的资产将自动添加到 angular.json 文件

2. 通过 npm 安装。(替代方案)

通过 npm 安装上述依赖。

现在通过以下方式安装 ngx-auth-firebaseui

npm install --save ngx-auth-firebaseui

通过以下命令安装依赖 @angular-material-extensions/password-strength

npm install --save @angular-material-extensions/password-strength
npm i -s @angular/material @angular/cdk @angular/flex-layout @angular/forms @angular/animations @angular/router

Firebase 依赖

npm i -s firebase @angular/fire

→ 继续按照此处的说明进行操作 链接

安装完成后,你需要导入主模块:

import { NgxAuthFirebaseUIModule } from 'ngx-auth-firebaseui';

剩下的唯一步骤是在你的应用程序模块中列出导入的模块。对于根(顶级)模块,具体方法会略有不同,你应该得到类似以下的代码(注意 NgxAuthFirebaseUIModule.forRoot()):

然后在你的 Angular AppModule 中:

import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; // 导入你的库 import { NgxAuthFirebaseUIModule } from 'ngx-auth-firebaseui'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, BrowserAnimationsModule, // 将 ngx-auth-firebaseui 库指定为导入项 NgxAuthFirebaseUIModule.forRoot({ apiKey: '你的-firebase-apiKey', authDomain: '你的-firebase-authDomain', databaseURL: '你的-firebase-databaseURL', projectId: '你的-firebase-projectId', storageBucket: '你的-firebase-storageBucket', messagingSenderId: '你的-firebase-messagingSenderId' }), ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

你的应用程序中的其他模块可以简单地导入 NgxAuthFirebaseUIModule

import { NgxAuthFirebaseUIModule } from 'ngx-auth-firebaseui'; @NgModule({ declarations: [OtherComponent, ...], imports: [NgxAuthFirebaseUIModule, ...], }) export class OtherModule { }

SystemJS

注意:如果你使用的是 SystemJS,你应该调整你的配置以指向 UMD 包。 在你的 systemjs 配置文件中,map 需要告诉 System 加载器在哪里查找 ngx-auth-firebaseui

map: { 'ngx-auth-firebaseui': 'node_modules/ngx-auth-firebaseui/bundles/ngx-auth-firebaseui.umd.js', }
<a name="configuration"/>

(2) 配置

import { BrowserModule } from '@angular/platform-browser'; import { NgModule } from '@angular/core'; import { AppComponent } from './app.component'; // 导入你的库 import { NgxAuthFirebaseUIModule } from 'ngx-auth-firebaseui'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; @NgModule({ declarations: [ AppComponent ], imports: [ BrowserModule, BrowserAnimationsModule, // 将 ngx-auth-firebaseui 库指定为导入项 NgxAuthFirebaseUIModule.forRoot( { apiKey: '你的-firebase-apiKey', authDomain: '你的-firebase-authDomain', databaseURL: '你的-firebase-databaseURL', projectId: '你的-firebase-projectId', storageBucket: '你的-firebase-storageBucket', messagingSenderId: '你的-firebase-messagingSenderId' }, () => '你的应用名称工厂', { enableFirestoreSync: true, // 启用/禁用用户与 firestore 的自动同步 toastMessageOnAuthSuccess: false, // 是否在身份验证成功时打开/显示 snackbar 消息 - 默认:true toastMessageOnAuthError: false, // 是否在身份验证错误时打开/显示 snackbar 消息 - 默认:true authGuardFallbackURL: '/loggedout', // 未经身份验证用户的 URL - 与路由上的 canActivate 功能结合使用 authGuardLoggedInURL: '/loggedin', // 已经过身份验证用户的 URL - 与路由上的 canActivate 功能结合使用 passwordMaxLength: 60, // 组件中的 `min/max` 输入参数应在此范围内。 passwordMinLength: 8, // 表单中密码长度的最小/最大值,独立于每个组件的最小/最大值。 // 与密码相同,但用于名称 nameMaxLength: 50, nameMinLength: 2, // 如果设置,在电子邮件验证之前,登录/注册表单不可用。 // 即使用户已连接,受保护的路由仍然受到保护。 guardProtectedRoutesUntilEmailIsVerified: true, enableEmailVerification: true, // 默认:true useRawUserCredential: true, // 如果设置为 true,在登录和注册后输出 UserCredential 对象而不是 firebase.User - 默认:false }), ], providers: [], bootstrap: [AppComponent] }) export class AppModule { }

<a name="usage"/>

(3) 使用方法

一旦导入了库,你就可以在你的 Angular 应用程序中使用其组件、指令和管道:

<ngx-auth-firebaseui></ngx-auth-firebaseui> 查看使用方法

<ngx-auth-firebaseui-login></ngx-auth-firebaseui-login> 查看使用方法

<ngx-auth-firebaseui-register></ngx-auth-firebaseui-register> 查看使用方法

<ngx-auth-firebaseui-providers></ngx-auth-firebaseui-providers> 查看使用方法

<ngx-auth-firebaseui-user></ngx-auth-firebaseui-user> 查看使用方法

<ngx-auth-firebaseui-avatar></ngx-auth-firebaseui-avatar> 查看使用方法

<a name="api"/>

API

<ngx-auth-firebaseui></ngx-auth-firebaseui> 查看API

<ngx-auth-firebaseui-login></ngx-auth-firebaseui-login> 查看API

<ngx-auth-firebaseui-register></ngx-auth-firebaseui-register> 查看API

<ngx-auth-firebaseui-providers></ngx-auth-firebaseui-providers> 查看API

<ngx-auth-firebaseui-user></ngx-auth-firebaseui-user> 查看API

<ngx-auth-firebaseui-avatar></ngx-auth-firebaseui-avatar> 查看API

额外提示:登录认证守卫

如果你想阻止未授权用户访问某个路由,可以使用内置的 LoggedInGuard Angular 路由守卫。

  1. NgxAuthFirebaseUIConfigauthGuardFallbackURL 中输入回退 URL
  2. NgxAuthFirebaseUIConfigauthGuardLoggedInURL 中输入登录后的 URL
import {NgxAuthFirebaseUIModule} from 'ngx-auth-firebaseui'; NgxAuthFirebaseUIModule.forRoot(firebaseKey, firebaseAppNameFactory, { authGuardFallbackURL: 'examples/logged-out', authGuardLoggedInURL: 'examples/logged-in', }),

如果用户已登录,他将被重定向到 examples/logged-in 路由(以此为例), 否则他将被重定向到 examples/logged-out 路由

  1. 在路由模块中导入 LoggedInGuard
import {NgModule} from '@angular/core'; import {Routes, RouterModule} from '@angular/router'; import {LoggedInGuard} from 'ngx-auth-firebaseui'; const routes: Routes = [ { path: '', redirectTo: 'home', pathMatch: 'full' }, { path: 'secured', loadChildren: 'app/secured/secured.module#SecuredModule', canActivate: [LoggedInGuard] } ]; @NgModule({ imports: [RouterModule.forRoot(routes)], exports: [RouterModule] }) export class AppRoutingModule { }
<a name="other-angular-libraries"/>

其他 Angular 库


<a name="support"/>

支持

由开发者构建,为开发者服务 :heart: 我们将帮助你 :punch:


YouTube 视频

https://www.youtube.com/watch?v=qP5zw7fjQgo&feature=emb_logo&ab_channel=Fireship https://www.youtube.com/watch?v=KpfJCEvpS9g&t=2s&ab_channel=JsWiz


谁在使用 ngx-mailto?有哪些很棒的应用?

  1. Nahaus.de

你的项目或应用是否未被列出?请向我提交 PR 以将其发布在 README 中


赞助商

jetbrains logo

本项目得到 jetbrains 的支持,提供了 1 个包含 webstorm 在内的所有产品包开源许可证。

fireship.io logo

Jeff Delaney 在 firebase.io 上提供最好的 Angular 和 Firebase 内容

查看 这个


<a name="license"/>

许可证

版权所有 (c) 2019-2022 Anthony Nahas。根据 MIT 许可证 (MIT) 授权

编辑推荐精选

讯飞智文

讯飞智文

一键生成PPT和Word,让学习生活更轻松

讯飞智文是一个利用 AI 技术的项目,能够帮助用户生成 PPT 以及各类文档。无论是商业领域的市场分析报告、年度目标制定,还是学生群体的职业生涯规划、实习避坑指南,亦或是活动策划、旅游攻略等内容,它都能提供支持,帮助用户精准表达,轻松呈现各种信息。

AI办公办公工具AI工具讯飞智文AI在线生成PPTAI撰写助手多语种文档生成AI自动配图热门
讯飞星火

讯飞星火

深度推理能力全新升级,全面对标OpenAI o1

科大讯飞的星火大模型,支持语言理解、知识问答和文本创作等多功能,适用于多种文件和业务场景,提升办公和日常生活的效率。讯飞星火是一个提供丰富智能服务的平台,涵盖科技资讯、图像创作、写作辅助、编程解答、科研文献解读等功能,能为不同需求的用户提供便捷高效的帮助,助力用户轻松获取信息、解决问题,满足多样化使用场景。

热门AI开发模型训练AI工具讯飞星火大模型智能问答内容创作多语种支持智慧生活
Spark-TTS

Spark-TTS

一种基于大语言模型的高效单流解耦语音令牌文本到语音合成模型

Spark-TTS 是一个基于 PyTorch 的开源文本到语音合成项目,由多个知名机构联合参与。该项目提供了高效的 LLM(大语言模型)驱动的语音合成方案,支持语音克隆和语音创建功能,可通过命令行界面(CLI)和 Web UI 两种方式使用。用户可以根据需求调整语音的性别、音高、速度等参数,生成高质量的语音。该项目适用于多种场景,如有声读物制作、智能语音助手开发等。

Trae

Trae

字节跳动发布的AI编程神器IDE

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
咔片PPT

咔片PPT

AI助力,做PPT更简单!

咔片是一款轻量化在线演示设计工具,借助 AI 技术,实现从内容生成到智能设计的一站式 PPT 制作服务。支持多种文档格式导入生成 PPT,提供海量模板、智能美化、素材替换等功能,适用于销售、教师、学生等各类人群,能高效制作出高品质 PPT,满足不同场景演示需求。

讯飞绘文

讯飞绘文

选题、配图、成文,一站式创作,让内容运营更高效

讯飞绘文,一个AI集成平台,支持写作、选题、配图、排版和发布。高效生成适用于各类媒体的定制内容,加速品牌传播,提升内容营销效果。

热门AI辅助写作AI工具讯飞绘文内容运营AI创作个性化文章多平台分发AI助手
材料星

材料星

专业的AI公文写作平台,公文写作神器

AI 材料星,专业的 AI 公文写作辅助平台,为体制内工作人员提供高效的公文写作解决方案。拥有海量公文文库、9 大核心 AI 功能,支持 30 + 文稿类型生成,助力快速完成领导讲话、工作总结、述职报告等材料,提升办公效率,是体制打工人的得力写作神器。

openai-agents-python

openai-agents-python

OpenAI Agents SDK,助力开发者便捷使用 OpenAI 相关功能。

openai-agents-python 是 OpenAI 推出的一款强大 Python SDK,它为开发者提供了与 OpenAI 模型交互的高效工具,支持工具调用、结果处理、追踪等功能,涵盖多种应用场景,如研究助手、财务研究等,能显著提升开发效率,让开发者更轻松地利用 OpenAI 的技术优势。

Hunyuan3D-2

Hunyuan3D-2

高分辨率纹理 3D 资产生成

Hunyuan3D-2 是腾讯开发的用于 3D 资产生成的强大工具,支持从文本描述、单张图片或多视角图片生成 3D 模型,具备快速形状生成能力,可生成带纹理的高质量 3D 模型,适用于多个领域,为 3D 创作提供了高效解决方案。

3FS

3FS

一个具备存储、管理和客户端操作等多种功能的分布式文件系统相关项目。

3FS 是一个功能强大的分布式文件系统项目,涵盖了存储引擎、元数据管理、客户端工具等多个模块。它支持多种文件操作,如创建文件和目录、设置布局等,同时具备高效的事件循环、节点选择和协程池管理等特性。适用于需要大规模数据存储和管理的场景,能够提高系统的性能和可靠性,是分布式存储领域的优质解决方案。

下拉加载更多