问题标签 [firebasesimplelogin]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
171 浏览

javascript - 如何在向控制器返回承诺的工厂方法中关闭事件监听器?

我有一个 loginService 工厂,用于执行登录、注销并向控制器提供用户数据。因为每次登录状态更改时我都需要更新控制器中的用户数据,所以我的工厂方法返回了一个更新承诺:

在 loginService 中,我正在监听 $firebaseSimpleLogin:login/logout 事件,在它们被触发后,我将 userdata 对象(由基于 UID 的函数返回)或 null($fbSimpleLogin:logout 事件)传递给 $emit。最后,在我的 loginService.currentUserData() 方法中,我正在监听这个发出的事件并返回 deferred.notify(userdata/null)。

第一个问题是,当我更改视图(模板+ctrl+位置)时,我需要调用 $firebaseSimpleLogin:login/logout 事件来将我的 userData 传递给新控制器。现在,我通过 $locationChangeStart 事件来做,但应该有更好的方法......

最后一个问题:当我改变视图时,数据调用比我预期的要多。可能每个控制器都通过调用 loginService.currentUserData() 在 $rootScope 上添加事件监听器?描述代码如下:

0 投票
1 回答
1548 浏览

firebase - CreateUser 函数在 AngularFire 中不起作用 - Firebase 简单登录?

我有以下使用 AngularFire 的控制器

当我将$scope.createAccount函数绑定到ng-click事件并单击绑定按钮时,console.log("found me")将在浏览器中运行,但未显示任何其他console.log命令$scope.createAccount

console.log($scope.auth)我在设置函数之前的命令$scope.createAccount显示了一个定义了函数的有效对象$createUser

我在运行时没有收到任何控制台错误,$scope.createAccount因此我假设调用已“成功”进行。

为什么我可以看到 auth 对象,但调用后没有收到回调$createUser

0 投票
1 回答
418 浏览

javascript - AngularFire 简单登录

我有一个带有用户存储的 FireBase 数据库。我也使用简单的登录电子邮件/密码。在用户存储中,我保存了一些用户的额外信息——例如最后登录日期。这是我的工作流程——从注册到登录:

我注册了一个用户;注册时将其添加到简单的登录电子邮件/密码中;我还在用户存储中添加了注册用户(包括从 simplelogin 返回的 id)。它存储在 Firebase 生成的唯一密钥下。

我以该新用户身份登录成功后,我从 simplelogin 存储中获取了一个用户对象:

现在我想更新用户存储中的相应用户 - 例如将 lastlogin 键设置为现在。但是只有当我知道它所在的 Firebase 生成的密钥时,我才能更新该用户。如何访问该密钥?

在用户存储中识别用户的唯一其他方法是检索用户存储中的所有用户,遍历所有用户并检查:当前 id 键值是否与登录用户的 id 键值匹配。对我来说看起来有点笨拙,但我担心这是我可以使用 firebase 进行查找的唯一方法?

0 投票
2 回答
1918 浏览

angularjs - Firebase身份验证暴露了firebaseAuthToken,它安全吗?

我正在尝试为我的 Firebase 应用程序提供 Google 登录。关注https://www.firebase.com/docs/security/simple-login-overview.html

似乎在成功登录后,可以获得一个用户,因此它可以例如存储在 Angular 范围内 - 例如 $scope.loggedInUser。(根据您的实现,它不一定是 Angular)

我的问题是,Firebase 返回的具有大量身份验证令牌的用户是否会被暴露是否存在安全风险?代码是 Javascript 的,黑客应该能够通过在浏览器中嵌入一些代码来劫持和窃取用户。

引起我关注的位是:accessToken、firebaseAuthToken

如果这是一个风险,我们如何保护它?


有关身份验证和用户数据,请参阅以下代码:

这是身份验证的代码:

loggedInUser 中包含的内容(这只是示例数据):

0 投票
1 回答
337 浏览

javascript - 让客户端创建用户但不修改直到通过身份验证

我在roder中使用backbone.js编写一个应用程序来学习。你可以在这里找到我实际得到的:https ://the-todo-app.firebaseapp.com/

我的想法是允许人们使用 simpleLogin 和 facebook 在应用程序中注册来创建用户,然后他们被重定向到他们的用户并被允许创建和修改他们的待办事项,但我遇到的问题是实际上每个用户都有写的可能性在用户文件夹上,这意味着他们可以输入和删除或修改其他用户的数据。我想限制 firebase 的安全性,以允许他们根据他们的 id 创建他们的用户,但如果他们没有经过身份验证,则不允许他们写。这就是我实际拥有的:

麻生试过这个:

但这种方法不允许客户端创建用户 ID。

这就是我的数据的实际外观:

如果你们知道如何做到这一点,我将不胜感激。

根据 ArneHugo 的回答,我刚刚设置了这个规则并且似乎工作得很好,我需要做更多的测试才能确定。

实际上,我必须将用户的 .read 规则添加到 true 以允许他们检查数据是否存在,这就是规则现在的样子。

这就是输出查找匿名用户的方式

这就是寻找经过身份验证的用户的方式。

这是匿名尝试写入另一个用户数据的 uoutput。

现在,做这个例子发现一个在数据库中已经存在 id 的经过身份验证的用户可以像这样写另一个用户的数据。

0 投票
2 回答
858 浏览

ios - 使用 firebaseSimpleLogin 保护 Firebase 用户帐户

我正在尝试为使用 firebase 的应用程序设计安全性的最佳方法

基本问题

我们希望我们用户的数据是安全的。我们不希望恶意代理能够访问 Firebase 数据库中其他用户的私人数据。似乎应该有一个通过 firebaseSimpleLogin 的解决方案,但是尽管搜索了文档,我们还没有看到一个。

问题细节

  • 我们提供带有用户帐户的应用程序,这些用户拥有私人数据
  • 用户应该只能阅读:
    • 他们自己的数据
    • 与所有用户相关的应用范围数据,例如,所有用户在最初创建帐户时都会获得一份模板,其原始副本位于 fb db
    • 另一个用户的一部分数据,如果该其他用户已明确决定与他们共享,例如他们制作的游戏,他们希望其他用户拥有其副本
  • 现在,用户使用 FirebaseSimpleLogin 登录。这是有问题的,因为任何恶意用户都可以合法地创建自己的帐户,并使用其帐户的电子邮件和密码使用恶意脚本登录,并访问数据库

我们考虑过的解决方案

1. 存储一个 user_secret 以确保用户具有合法访问权限

#1 的问题

  • 我们如何限制对安全孩子的写/读访问?
    • 服务器不存在 SimpleLogin
    • 我们不希望这些信息可见,因为恶意用户可以从技术上读取它以查找有关他/她自己帐户的信息,然后使用它来细读数据库的其余部分
  • 与问题陈述中的问题相同:用户可以合法地生成一个帐户,然后使用这些凭据来恶意访问数据库

2. 临时存储用户密码

  • 用户发起登录
  • 节点服务器生成密码,将其存储在 Firebase 中的受限安全子节点中(服务器可以这样做,因为 Firebase Secret 允许完全访问)
  • 我们一直使用 Firebase SimpleLogin 授权 Firebase 客户端
  • 用户与应用程序交互。Firebase 安全规则仅在节点服务器写入的安全子节点存在时才允许读/写访问
  • 用户启动注销/崩溃/关闭应用程序
  • 节点服务器从受限安全子节点中删除密码
  • 像我们一样取消授权 Firebase ref
  • 完毕

#2的问题 - 这种方法的问题是用户在登录时很容易受到攻击,因为他们的安全信息会存在。

3. 使用内置的 Firebase 安全规则

  • 我们希望有一个内置的 firebase 解决方案,但还没有找到解决上述问题的解决方案。如果你能给我们指出一个,那就太棒了。

我们希望有人可以帮助阐明这里的最佳方法,无论是使用我们的想法还是其他途径。非常感谢你的帮助。

0 投票
2 回答
260 浏览

angularjs - 错误:FirebaseSimpleLogin.login() 失败:无法识别的身份验证提供程序

好的,我遇到了一个相当奇怪的错误。我在我的应用程序中设置社交登录facebooktwittergoogle使用带有 firebase 后端的 angularjs。facebooktwitter登录都可以找到,但不能通过谷歌找到。单击使用 Google 登录按钮会在我的控制台上引发此错误

Error: FirebaseSimpleLogin.login() failed: unrecognized authentication provider

这很奇怪,我不确定问题出在哪里

我有这个观点

在我的登录控制器中

我的 loginService 有这个

Twitter 和 Facebook 身份验证工作正常,但不适用于 Google。我错过了什么?

谢谢

0 投票
1 回答
553 浏览

javascript - Firebase is login user multiple times

Show of weird behavior

This happens everytime I hit the login button.

First login: callback shows 2 logins

First logout

Second login: callback shows 4 logins

Second logout

Third login: callback now shows 5 logins in row

etc.

This is my login function:

My question is simple. Why is this happening? Sometimes even if I hit logout, login is called automatically.

0 投票
1 回答
204 浏览

node.js - 将 Firebases 的第三方用户数据对象发布到服务器

我正在使用 Firebase 和 SimpleLogin 来允许用户通过 Google、Twitter 等登录。

我想使用一些thirdpartyuserdata对象为我在 Node.js 上运行的应用程序创建用户配置文件。

目前我正在将此数据发布到服务器,以便我可以添加到它并创建配置文件对象,但我想知道是否有更好的方法来做到这一点 - 有没有什么我可以调用服务器端来获取这个thirdpartyuserdata而不必发布它来自客户端?

0 投票
1 回答
2408 浏览

javascript - AngularFire - 等到控制器中检索到用户数据

用户使用用户名、电子邮件和密码进行注册。我通过电子邮件使用 FirebaseSimpleLogin 进行身份验证,获取用户 ID,然后使用用户 ID 加载我的用户:

现在,我的问题是,如果我在 HomeCtrl 中登录,我想重定向到用户个人资料页面:

不幸的是,我不确定如何等到 setCurrentUser 函数完成后再重定向。有没有办法让我的控制器中的一个功能等到其他功能完成?

我有一个解决方法,但我很确定这不是正确的方法。现在,我正在观察要更新的用户变量,然后在它更改为用户后调用所有函数,如下所示: