Firebase自定义login过程中何处存储密钥
我将Node.JS与Firebase耦合,并计划使用LinkedIn来login用户。
在后台我有:
var FirebaseTokenGenerator = require("firebase-token-generator"); var mySecret = 'XXXXX' module.exports = function (app, passport) { app.get('/fire', function (req, res) { var tokenGenerator = new FirebaseTokenGenerator(mySecret); var token = tokenGenerator.createToken({ "app_user_id": 123X, "isModerator": true }); res.render('firebase-index.ejs', {token: token, kale: 'mazing'}); }) };
在模板firebase-index.ejs上:
在这里,我不确定如何存储授权过程中使用的令牌。 我似乎不能直接使用它,除非我插入到像这样的DOM元素
<span id="token"><%= token %><span>
然后我可以通过下面的'token.textContent'访问它
dataRef.auth(token.textContent, function(error) { if(error) { console.log("Login Failed!", error); } else { console.log("Login Succeeded!"); console.log(token.textContent); } });
这是安全/首选的方式吗? 另外,我login后,如何访问authvariables? 谢谢
大多数情况下,在现代应用程序中,您将向服务器API请求身份validation令牌,而不是将身份validation令牌作为HTML主体的一部分发送。 这是通过对您的后端进行HTTP调用完成的,这将返回一个JSON对象(即asynchronous请求)。
服务器代码(假设快递):
var FirebaseTokenGenerator = require("firebase-token-generator"); var tokenGenerator = new FirebaseTokenGenerator(process.env.FIREBASE_SECRET); app.get('/authToken', function(req, res){ var token = tokenGenerator.createToken({some: "arbitrary", data: "here"}); res.json(token); });
客户端代码(假设jQuery):
$.getJSON( "https://SERVER/authToken", function( token ) { console.log(token); });
如果您坚持将其作为view / html数据的一部分返回,您可以直接将其注入JavaScriptvariables(因为您正在生成它并知道它不包含任何恶意代码)。
在这里,我只是使用窗口(即全局),但你更喜欢有一些范围的对象(例如myApp.config.authToken),你可以把它附加到。
<script>window.authToken = '<%= token %>';<script>