【发布时间】:2017-08-28 23:13:49
【问题描述】:
我正在处理的网站使用 Firebase 身份验证,并且登录的不同用户对于他们可以访问哪些页面具有不同的权限。
登录的设置方式和这个post类似:
- 用户使用两个参数登录 - “id”和“email”
- 服务器使用这些来创建一个自定义“uid”,然后使用 Firebase Admin SDK 创建一个发送回客户端的自定义令牌。
- 客户端使用 Javascript Firebase SDK - firebase.auth().signInWithCustomToken() 登录
- 现在用户已登录,他们可以点击不同的页面 - 即“/foo”、“/bar”
我遇到的问题是,当他们访问新页面时,我试图将令牌从客户端传递回服务器(几乎与它在 Firebase Doc 中的完成方式相同),验证令牌并检查它是否有权查看该网页。
我正在尝试找出最好的(也是最安全的)方法来做到这一点。我考虑过以下选项:
- 使用令牌构造一个 URL,但我听说这不是一个好的做法,因为令牌会暴露出来,会话劫持变得容易得多。
我一直在尝试在请求标头中传递令牌,但据我了解,当用户单击指向不同页面的链接(或者如果它在 javascript 中重定向)时,您无法添加标头。同样的问题也适用于使用 POST。
当用户单击指向不同页面的链接时,我可以做些什么来安全地将这些信息传递给服务器并检查权限?
【问题讨论】:
-
您可以将其设置在 cookie 中。这就是我可能会做的。
-
嗨,迈克尔,非常感谢您的回复。我需要服务器上的信息,但会话是我没有想到的。但这似乎不起作用,因为即使我将客户端的令牌 或 自定义 uid 存储在服务器上,客户端仍然需要发送其中一个才能访问正确的会话数据.这仍然使会话劫持非常容易..
-
我也遇到了同样的问题,你是怎么解决的?
标签: authentication firebase firebase-authentication