我正在将Node.JS与Firebase结合起来,并计划使用LinkedIn登录用户。
后端的:
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'}); })
};模板上的-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);
}
});这是一种安全/首选的方法吗?此外,在我登录后,如何访问auth变量?谢谢
发布于 2014-03-25 21:30:49
在现代应用程序中,大多数情况下,您会向服务器API请求auth令牌,而不是将auth令牌作为HTML主体的一部分发送。这是通过对后端进行HTTP调用来完成的,它将返回一个JSON对象(即异步请求)。
服务器代码(假设表示):
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);
});如果您无法将其作为视图/html数据的一部分返回,则可以将其直接注入JavaScript变量(因为您正在生成它,并且知道它不包含任何恶意代码)。
在这里,我只使用窗口(即全局的),但是您希望有一些作用域对象(例如myApp.config.authToken),您可以将它附加到其中。
<script>window.authToken = '<%= token %>';<script>https://stackoverflow.com/questions/22622558
复制相似问题