天道酬勤,学无止境

如果自定义令牌的生成是异步的,我将如何返回 Firebase 自定义令牌?(How would I return a Firebase custom token if the generation of the custom token is asynchronous?)

问题

我正在使用托管在 Heroku 上的 Spark 框架,我在我的服务器中的main : 方法中有这个

post("/token", (request, response) -> "Hello World");

这很好,但是,我想实际发送一个自定义令牌,而不仅仅是“Hello World”。

所以,从逻辑上讲,我需要这个:

FirebaseAuth auth = FirebaseAuth.getInstance();
String uid = UUID.randomUUID().toString();
post("/token", (request, response) -> auth.createCustomToken(uid));

但是, createCustomToken返回一个Task<String>而不是String 。 所以,我必须这样做:

auth.createCustomToken(uid).addOnSuccessListener(new OnSuccessListener<String>() {
            @Override
            public void onSuccess(String s) {

            }
        });

但是,在这种形式中:

post("/token", (request, response) -> auth.createCustomToken(uid).addOnSuccessListener(new OnSuccessListener<String>() {
            @Override
            public void onSuccess(String token) {

            }
        }));

我真正返回的只是一个Task<String> 。 我需要从onSuccess()方法返回token ,但我不能,因为它是一个内部类。

我能做些什么来解决这个问题?

回答1

我在 Google App Engine 遇到了类似的问题。 我必须在服务器端验证一个 firebase 令牌,但响应是从 firebase 异步发回的。 (在 Google App Engine 上验证 Firebase 令牌)

您可以尝试以下代码而不是使用 OnSuccesListener

Task<String> authTask = FirebaseAuth.getInstance().createCustomToken(uid);

try {
    Tasks.await(authTask);
} catch (ExecutionException | InterruptedException e ) {
    log.severe(e.getMessage());
}

String myToken = authTask.getResult();
回答2

这对我有用:

FirebaseAuth.getInstance().createCustomTokenAsync(UID).get()

它返回一个字符串中的自定义标记。 从 https://www.youtube.com/watch?v=Fi2dv6NcHWA 获得

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 使用新的 1.0 SDK 为 firebase 生成带有云函数的自定义身份验证令牌(Generating a custom auth token with a cloud function for firebase using the new 1.0 SDK)
    问题 从firebase-admin@5.11.0和firebase-functions@1.0.0 firebase-admin在应用程序初始化时不再接受应用程序配置。 我有一个 firestore 函数,可以使用 firebase-admin 的createCustomToken生成自定义令牌。 调用该函数将生成一个凭证,我将在credential属性中将其传递给initializeApp 。 我现在该怎么做? 我是否需要以某种方式编辑process.env.FIREBASE_CONFIG并在调用initializeApp之前将序列化凭据放在那里? 回答1 基于 Github 中的这个问题,它仍然有效。 https://github.com/firebase/firebase-admin-node/issues/224 以下示例对我有用: const functions = require('firebase-functions'); const admin = require('firebase-admin'); const serviceAccount = require('./serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount)
  • Firebase Admin SDK 的 Node.js 身份验证服务器 - JWT 验证问题(Node.js authentication server for Firebase Admin SDK - JWT validation issue)
    问题 我正在做一个项目,我们将在微服务架构中使用不同的服务,并且我们还想使用一些 Firebase 服务。 我正在开发一个身份验证服务器,该服务器将创建自定义 JWT,以用于 Firebase 以及其他 API 项目。 我们希望使用 Firebase Auth SDK 轻松与 FB、Google、Twitter 等集成,但我们需要用更多数据丰富用户的令牌。 因此,我的想法是创建一个使用 Firebase Admin SDK 来执行此操作的 Node.JS 身份验证服务器。 流程如下: 用户在客户端使用最喜欢的提供商登录如果登录成功,用户会收到来自 Firebase 的 JWT。 这被发送到身份验证服务器进行验证如果身份验证服务器可以使用管理 SDK 验证令牌,则创建一个包含更多数据的新自定义令牌,并将此新自定义令牌返回给客户端让客户端使用新的自定义令牌重新进行身份验证,并将其用于与 Firebase 以及我们的其他 API 项目(主要在 .NET Core 中)进行通信 步骤 1-3 工作正常。 尝试验证其他服务上的自定义令牌时会出现问题。 TL; DR :这里有两个问题: 验证使用 Firebase Node.JS Admin SDK 发布的自定义令牌时,我应该使用什么作为公钥? 从 Google 公开的 JWK 中提取的密钥,还是从用于签名的私钥中提取的密钥? 在 JWK
  • 在 Firebase 9.0.0 API 中,如何检查用户是否具有有效的 Auth 会话?(In Firebase 9.0.0 API, how to check the user has valid Auth session or not?)
    问题 在旧版 Firebase API 中,我使用“mFirebase.getAuth().getExpires()”来验证用户会话。 但是在新的 Firebase 9.0.0 API 中,我找不到这样的验证。 现在我正在检查身份验证会话的可用性,如下所示, public static boolean hasValidAuthToken() { return FirebaseAuth.getInstance().getCurrentUser() != null ? true : false; } 如果令牌已过期,我该如何处理? 更新:实际上我正在做自定义身份验证。 在服务器端拥有 Firebase 服务器 sdk(java)。 默认情况下,身份验证令牌将在 1 小时后过期。 令牌过期后出现以下错误, D/ConnectionRetryHelper: Scheduling retry in 398ms D/PersistentConnection: pc_0 - Trying to fetch auth token D/PersistentConnection: pc_0 - Error fetching token: An internal error has occured. [ Internal error. ] D/PersistentConnection: pc_0 -
  • 在 Firebase Firestore 中,有没有办法将信息传递给不属于路径的安全规则?(In Firebase Firestore, is there any way to pass info to the Security Rules which is not part of the path?)
    问题 我想向 Firestore 数据库 (Firebase) 发送一些信息,最好是键值对(但不一定),以便它可以使用它来评估其规则中的访问(在读取和写入时)。 但是,我不希望此信息成为路径的一部分。 例如,假设我有一些passParameters方法: DocumentReference docRef = db.collection("cities") .document("SF") .passParameters("abc", 123); 然后我可以在编写规则时访问这些信息,如下所示: service cloud.firestore { match /databases/{database}/documents/cities/SF/ { allow read, write: if request.parameters.abc == 123; } } 请注意,以上只是一个例子。 现实生活中的用例更为复杂。 换句话说,不要过多关注示例本身,而是回答更通用的问题:有没有办法将信息传递给不属于路径的安全规则? 回答1 您可以使用自定义令牌发送此类参数。 将这些值作为声明包含在自定义令牌中,并在向 Firestore(或登录)发送请求时在客户端中使用该令牌。 此链接解释了如何 - 1) 创建自定义令牌,2) 在这些令牌中包含自定义声明,以及 3) 在安全规则中访问这些声明。
  • 将数据保存到 Firebase 用户对象中(Save data into the Firebase user object)
    问题 使用这个: firebase.auth().onAuthStateChanged(function(user){ if (user){ Firebase正在返回包含userID 。 当网页获取此对象时,它需要用户 ID,并且需要再次访问数据库记录以检查一些非常基本的内容(如果它是付费用户或其他简单的密钥),以便选择 UI。 是否可以在此回调中返回用户包括一些有关他的预定义基本信息? 回答1 如果您想向用户帐户添加一些额外信息,则不能使用具有固定属性列表的 User 对象。 有两种经典方法: 1.创建一个特定的用户记录 您为每个用户创建一个 Firestore 文档(或一个实时数据库节点)。 通常您使用用户的 uid 作为 Firestore 文档/RTDB 节点的 id。 这意味着您将需要获取数据库以获取此额外的用户信息,例如 firebase.auth().onAuthStateChanged(function(user){ if (user) { firebase.firestore().collection('users').doc(user.uid).get() .then(...) } //... } 2. 使用自定义声明 如果您只需要存储有限数量的额外信息以提供访问控制,您可以使用自定义声明。 这特别适用于存储用户角色,例如付费用户。
  • Firebase 3.x-令牌/会话到期(Firebase 3.x - Token / Session Expiration)
    问题 有谁知道令牌过期需要多长时间? 现在没有在控制台上设置令牌有效性的选项。 回答1 在最新版本的 Firebase 身份验证中,登录会话不再过期。 相反,它使用长期帐户令牌和短期自动刷新访问令牌的组合来获得两全其美。 如果你想结束一个用户的会话,你可以调用 signOut()。 回答2 它确实过期了。 登录一小时后,令牌 ID 过期。 如果您尝试验证 sdk 返回错误“错误:Firebase ID 令牌已过期。从您的客户端应用获取新令牌并重试。请参阅 https://firebase.google.com/docs/auth/server/verify-id -tokens 获取有关如何检索 ID 令牌的详细信息。” 是否有这种方法可以将过期时间更改为 Firebase 令牌,而不是自定义令牌。 任何知道这实际上是如何工作的人。 回答3 对于任何仍然感到困惑的人,这里都非常详细地解释了 如果您的应用程序包含自定义后端服务器,则可以并且应该使用 ID 令牌与其进行安全通信。 发送用户的 ID 令牌可以通过 Firebase Admin SDK(或者如果 Firebase 没有 Admin SDK 甚至第三方 JWT 库)进行验证,而不是使用用户的原始 uid 发送请求,这很容易被恶意客户端欺骗以您选择的语言)。 为此,现代客户端 SDK 提供了方便的方法来检索当前登录用户的 ID
  • Firebase:设置其他用户属性(Firebase: setting additional user properties)
    问题 我想向Firebase用户对象添加属性。 用户文档说,我只能使用Firebase实时数据库存储其他属性。 我不确定这在实践中如何工作。 在实践中,以下含义是什么? 您不能将其他属性直接添加到Firebase User对象。 相反,您可以将其他属性存储在Firebase实时数据库中。 我将其解释为: “您不能修改FIRUser对象的属性,但可以将其与其他对象结合使用” 我找到了以这种方式插入的set函数文档: var userRef = ref.child("users"); userRef.set({ newfield: "value" }); 这是明智的做法吗? 回答1 你快到了。 在旧版Firebase文档中,我们有一节介绍了如何存储此类其他用户数据。 关键是将其他信息存储在用户的uid : let newUser = [ "provider": authData.provider, "displayName": authData.providerData["displayName"] as? NSString as? String ] // Create a child path with a key set to the uid underneath the "users" node // This creates a URL path like the
  • Firebase 存储安全规则和 Firestore(Firebase Storage security rules and firestore)
    问题 我在 Firestore 中有“组”。 每个组都有一个“成员”键。 我的目标是编写一个 Firebase 存储安全规则,只允许“写入”组的成员: # I want something like this match /groups/{groupId} { allow read, write: if request.auth.uid in get(/database/groups/{groupId}/members); } 回答1 安全规则无法从其他服务读取,因此您将无法按照您在此处描述的方式实现组。 相反,您必须在您的规则本身或用户的 ID 令牌(作为自定义声明)中编码某人属于哪些组的知识。 在用户的令牌中嵌入组成员身份 有关后者的示例,请参阅 Firebase 文档中有关将数据设为“组私有”的此片段: 另一个同样常见的用例是允许对对象进行组权限,例如允许多个团队成员在共享文档上进行协作。 有几种方法可以做到这一点: 创建一个 Firebase 身份验证自定义令牌,其中包含有关群组成员的其他信息(例如群组 ID) 在文件元数据中包含组信息(例如组 ID 或授权 uid 列表) 一旦此数据存储在令牌或文件元数据中,就可以从规则中引用它: // Allow reads if the group ID in your token matches the file metadata
  • Cordova/Phonegap 中的 Firebase:使用应用内的电子邮件/密码登录?(Firebase in Cordova/Phonegap: Log in using Email/Password from within app?)
    问题 我正在从cordova 应用程序运行webview 并想对用户进行身份验证,我知道他们有OAuth 策略,但我需要使用电子邮件/密码组合。 我想保持简单,但最终可能不得不生成一个令牌。 打开一个 InAppBrowser 加载 Firebase 的身份验证流程使用此方法收听要完成的身份验证流程:http://blogs.telerik.com/appbuilder/posts/13-12-23/cross-window-communication-with-cordova%27s-inappbrowser 再次从 webview 中获取结果并将其插入到 webview firebase 实例中 我猜这是不可能的,因为安全。 我的应用程序正在使用亚马逊登录(必需),所以我的替代方法是: webview 使用我们的外部 url 加载 InAppBrowser 加载 Amazon 身份验证,然后为 Firebase 生成令牌 webview 侦听令牌并抓取它,将其存储在 localstorage 中 编辑:在使用用户名/密码登录的 firebase 文档中,我看到它返回会话令牌和authData对象中的更多信息:https://www.firebase.com/docs/web/guide/user- auth.html 然后我可以从该对象中获取所有信息并将其发送回cordova
  • 如何在nodejs的firebase-admin中对用户进行身份验证?(How to authenticate an user in firebase-admin in nodejs?)
    问题 目前我正在 nodejs 上创建一个 Firebase API。 我想在 nodejs 上使用 firebase-admin 处理所有 Firebase 内容(如身份验证)。 但是,在客户端没有Javascript Firebase SDK 的情况下,在 firebase-admin 中通过 nodejs 对用户进行身份验证的正确方法是什么? 在 admin 的官方文档中,我没有找到用于nodejs 的名为signInWithEmailAndPassword的函数(就像在客户端 SDK 上一样)。 只有一个函数叫做:“ getUserByEmail ”,但是这个函数不会检查用户是否输入了正确的密码。 这是我的表格: <form class="sign-box" action="/login" method="post"> <div class="form-group"> <input id="username" name="username" type="text" class="form-control" placeholder="E-Mail"/> </div> <div class="form-group"> <input id="password" name="password" type="password" class="form-control"
  • 如何在 Firebase 3.0 中的应用程序之间共享身份验证令牌?(How to share Authentication token between app in Firebase 3.0?)
    问题 在旧版本的 Firebase 中,我们可以获得经过身份验证的令牌,以便在我们的应用程序、扩展程序之间共享。 但是当升级到 Firebase 3.0 时,该功能不再起作用。 我在 FIRUser 上使用了 getTokenWithCompletion:,然后在我的 App Extension 中,我用我刚获得的令牌调用了 signInWithCustomToken:completion: 。 但 Firebase 返回一个带有消息的错误: 错误域=FIRAuthErrorDomain 代码=17000 “自定义令牌格式不正确。请检查文档。” 请检查文档。} 如何从 FIRUser 获取身份验证令牌以在我的应用程序扩展中重新对其进行身份验证? 回答1 signInWithCustomToken旨在与在您自己的服务器上铸造的您自己的令牌一起使用(在此处阅读更多信息)。 在应用程序的不同组件之间引导会话的最佳方式是在登录时共享用户的凭据并在所有组件之间执行引导。 例如,如果您使用 Facebook 登录,当您检索 facebook 访问令牌时,您必须将它从您的应用程序共享到您的扩展程序,然后在主应用程序和扩展程序中使用相同的令牌调用 signInWithCredential。 目前无法使用来自另一个 Firebase 应用实例的 v3.X SDK 将用户登录到 Firebase 应用
  • 如何在 Firebase 3.xx 中处理自定义 Firebase 令牌到期(How to handle custom firebase token expiry in Firebase 3.x.x)
    问题 我已经使用“ signInWithCustomToken() ”来验证firebase用户。 此令牌将在 1 小时后过期。 Firebase 建议令牌过期时间为 1 小时。 如果我们在使用“php-jwt”库创建自定义令牌时修改了过期时间,firebase 会抛出异常“自定义令牌格式不正确。请检查文档”。 在搜索解决方案时,我发现了以下线程-“Firebase Android 身份验证失败:expired_token(身份验证令牌已过期)” 但是“ onTokenRefresh() ”返回的刷新令牌对我不起作用。 刷新此自定义令牌的程序是什么? 或者 有没有办法将手动到期设置为自定义令牌? 回答1 Firebase 自定义令牌生成存在限制。 Firebase 自定义身份验证令牌限制为最长 1 小时(3600 秒)。 exp令牌到期的时间(以秒为单位)。 它最多可以比 iat 晚 3600 秒。 如果 auth token 每小时过期一次,我们就很难一直保持有效的 session :( 当我们使用默认的 Auth 提供程序时,例如(Google、Facebook、Email..); 默认情况下,Firebase SDK 会负责刷新您的 Auth 令牌。 但是在自定义身份验证中,Firebase SDK 需要联系 3rd 方服务器以获取新令牌。 这里只有 SDK 无法刷新令牌!
  • 如何在Firebase中实现基于角色的访问控制(how do I implement role based access control in firebase)
    问题 这是我对Firebase&nosql的首次尝试,我来自SQL背景。 使用“简单登录安全电子邮件/密码”,如何限制对Firebase中数据的访问? 例如,某些用户将有权创建业务对象(用户,客户,类别等),而其他用户则无权。 有没有一种方法可以将权限列表附加到“ auth”变量? 回答1 无法将权限直接附加到auth变量(或者至少这似乎不是预期的策略)。 我建议创建一个由auth.uid组织的用户集合,您可以在其中保留任何类型的权限属性,以使您的安全规则可能看起来像这样(未经测试): { "rules": { ".read": true, "users": { ".write": "root.child('users').child(auth.uid).child('role').val() == 'admin'" } } } 其中role是属于users集合中所有对象的属性。 更新 请参阅下面的评论: “没有一种将权限直接附加到auth变量的方法”这已在2017年进行了更改。您现在可以将自定义声明附加到auth配置文件,这在安全规则中可用。 有关自定义声明,请参见bojeil的答案和Firebase文档。 –弗兰克·范·普菲伦(Frank van Puffelen) 回答2 Firebase通过对ID令牌的自定义用户声明对任何用户的基于角色的访问提供了支持:https:/
  • 如何在 Azure 移动应用中实现自定义身份验证(How to implement custom authentication in an Azure Mobile App)
    问题 在 Azure 移动应用程序的最新更新中,终于添加了对自定义身份验证的支持,参考:https://azure.microsoft.com/en-us/blog/azure-mobile-apps-november-2015-update。 他们包含了一个用于发布 JWT 令牌的片段,但我的问题是我将如何在我的应用程序中使用它来验证请求? 我想我需要在我的 WebApiConfig 中添加一个自定义令牌处理程序,但我找不到有关该主题的任何文档。 回答1 打开应用服务身份验证添加 Microsoft.Azure.Mobile.Server.Login NuGet 包创建自定义身份验证端点配置服务以要求身份验证在客户端使用令牌 请查看此了解更多详情。 这篇文章一步一步地解释它。 http://www.newventuresoftware.com/blog/custom-authentication-with-azure-mobile-apps/ 回答2 我最终自己弄明白了这一点。 如果有人想知道,这实际上“有效”。 我查看了源代码,唯一进行的验证是基于 JWT 令牌加密密钥、“受众”设置和“发行者”设置。 您只需将 [Authorize] 属性添加到控制器或方法,管道会负责其余的工作。 如果需要自定义声明,可以将它们添加到 MobileAppLoginHandler
  • Firebase onCreate 向 auth.user 添加自定义声明(Firebase onCreate add custom claims to the auth.user)
    问题 我正在尝试添加自定义声明, isRegistered 到 firebase。 我的 firestore 有另一个user集合来保存注册信息记录。 现在我试图保留一个 isRegistered 自定义声明,但我似乎无法让它工作。 exports.addRegisteredRole = functions.database.ref('/user') .onCreate((snap, context) => { return // **I added this later, but the issue still remains.** admin.auth() .setCustomUserClaims(context.auth.uid, {isRegistered: true}) .then(() => { console.log('done', snap) return { message: 'done', data: snap } }) .catch(err => { console.log('something went wrong', err); return err }) }); 我正在通过以下方式检查此声明, currentUser.getIdTokenResult() .then(res => { console.log(res.claims.isRegistered
  • 表单识别器无效模型状态[关闭](Form Recognizer invalid model status [closed])
    问题 关闭。 此问题不可重现或由拼写错误引起。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其成为 Stack Overflow 的主题。 去年关闭。 改进这个问题 我们尝试了 Form Recognizer 自定义训练,步骤如下(API 2.0) https://pnagarjuna.wordpress.com/2020/01/07/azure-form-recognizer-service-custom-model-training-steps/ 训练模型成功 (201),但在检查自定义模型状态后,我们收到此错误 { "modelInfo": { "modelId": "f17bd306-3c6a-4067-8ef1-5f2e6ced79e1", "status": "invalid", "createdDateTime": "2020-02-05T17:24:30Z", "lastUpdatedDateTime": "2020-02-05T17:24:31Z" }, "trainResult": { "trainingDocuments": [], "errors": [{ "code": "2014", "message": "No valid blobs found in the specified Azure blob container. Please
  • Firebase 云功能:如何处理连续请求(Firebase cloud function: how to deal with continuous request)
    问题 使用 Firebase(在本例中为 Firebase 云功能)时,我们必须为带宽的每个字节付费。 所以,我想知道我们如何处理有人以某种方式找到我们的端点然后故意连续请求(通过脚本或工具)的情况? 我在互联网上进行了一些搜索,但没有看到任何帮助。 除了这个,但不是很有用。 回答1 由于您没有指定哪种类型的请求,我将假设您指的是 firebase 云函数上的 http(s)-triggers。 您可以设置多个限制器来“减少”请求消耗的带宽。 我会写一些我想到的 1) 限制请求类型 如果您只需要GET并说例如您不需要PUT您可以通过为那些返回 403 开始​​,然后再继续使用云功能。 if (req.method === 'PUT') { res.status(403).send('Forbidden!'); } 2)如果可以,请进行身份验证 按照此处的 Google 示例,仅允许授权用户使用您的 https 端点。 您可以通过验证像这个 SOF 对这个问题的回答这样的令牌来简单地实现这一点。 3) 检查原产地 在进一步使用云功能之前,您可以尝试检查请求的来源。 如果我没记错的话,云函数可以让您完全访问 HTTP 请求/响应对象,以便您可以设置适当的 CORS 标头并响应飞行前 OPTIONS 请求。 实验想法1 假设您可以将您的功能置于负载均衡器/防火墙之后,并中继触发它们。
  • 如何设置Firebase安全规则以仅接受来自iOS应用程序的连接(How to setup Firebase security rules to accept connections only from an iOS App)
    问题 我想配置一个Firebase数据库,使其仅接受来自我的iOS应用程序的连接。 我在配置规则以管理来自已验证用户等的访问权限时没有问题,但是我想知道什么是阻止与我以外的其他应用程序连接的最佳方法。 我怎样才能做到这一点? 为了更具体的用例。 我的应用程序是一项服务,用户可以注册以使用它与Twitter和Facebook进行身份验证。 用户将为该服务付费,而该应用程序将使用Firebase作为后端,这意味着我将为Firebase服务付费。 用户付钱给我,我付Firebase付钱。 因此,这就是我只希望我的App是连接和使用Firebase数据库的唯一App的原因。 我认为这是最常见的情况。 其他后端服务(如Parse)允许您在应用程序连接时通过使用密钥执行此操作。 回答1 如果我正确理解了该问题,则条件如下: 您提供可购买的应用程序,该应用程序提供对高级数据的访问只有付费客户才能读取该数据用户无需下载您的应用程序即可使用FirebaseSimpleLogin登录您想防止这种情况 假设所有这些都是正确的,我将看到两个快速答案: 创建自己的身份验证令牌 由于FirebaseSimpleLogin可从云中获得,因此您将无法阻止用户基于设备进行身份验证。 但是FirebaseSimpleLogin只是令牌生成器的包装器,因此没有什么可以阻止您生成自己的令牌。 #!/usr/bin/env
  • 使用 Firebase Cloud 功能创建用户后如何发送电子邮件验证?(How to send email verification after user creation with Firebase Cloud functions?)
    问题 我正在尝试在创建用户后发送验证电子邮件。 由于 Firebase 本身没有办法,我正在尝试使用云功能。 我真的找不到很多关于它的文档。 到目前为止我试图做的是: exports.sendEmailVerification = functions.auth.user().onCreate(event => { return user.sendEmailVerification() }); 但我收到未定义用户的错误。 如何创建此功能? 谢谢! 回答1 向用户发送“电子邮件验证”电子邮件有两种可能性: 登录用户请求发送验证电子邮件。 为此,您从前端调用来自相应客户端 SDK 的 sendEmailVerification() 方法。 通过其中一个 Admin SDK,您可以通过相应的方法(例如,用于 Node.js Admin SDK 的 auth.generateEmailVerificationLink())生成用于电子邮件验证的链接,并通过通过您自己的机制发送的电子邮件发送此链接。 所有这些都在后端完成,并且可以在 Cloud Function 中完成。 请注意,Admin SDK 的第二个选项与 Client SDK 的第一个选项并不完全相似:在第二个选项中,您需要通过自己的机制发送电子邮件,而在第一种情况下,电子邮件由Firebase 平台 如果您希望将该功能添加到
  • .NET Core身份服务器4身份验证VS身份身份验证(.NET Core Identity Server 4 Authentication VS Identity Authentication)
    问题 我正在尝试了解在ASP.NET Core中进行身份验证的正确方法。 我看了几个资源(其中大多数已过时)。 微软身份的简单实现 ASP.Core身份验证简介 MSDN身份简介 有人提供替代性解决方案,说明要使用基于云的解决方案(例如Azure AD),或者使用IdentityServer4并托管我自己的令牌服务器。 在旧版本的.Net中,身份验证的一种较简单形式是创建自定义原则,并在其中存储其他身份验证用户数据。 public interface ICustomPrincipal : System.Security.Principal.IPrincipal { string FirstName { get; set; } string LastName { get; set; } } public class CustomPrincipal : ICustomPrincipal { public IIdentity Identity { get; private set; } public CustomPrincipal(string username) { this.Identity = new GenericIdentity(username); } public bool IsInRole(string role) { return Identity != null &&