我想在显示html页面之前检查用户身份验证
我的server.js文件就是这样
const express = require('express');
var jquery = require('jquery');
var admin = require("firebase");
const app = express();
app.use(express.static(__dirname + '/public'));
var serviceAccount = require("firebasekey.json");
admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://23442344114.firebaseio.com"
});
var ref = admin.app().database().ref();
app.get(['/','/index.html'], function(req, res) {
res.sendFile(__dirname + '/public/index.html');
});
app.get(['/dash' ], function(req, res) {
res.sendFile(__dirname + '/public/dash/index.html');
});
如何在呈现页面之前先在服务器端检查用户是否已通过身份验证;例如
app.get(['/dash' ], function(req, res) {
//check if the user is authenticated
if auth == true {
res.sendFile(__dirname + '/public/dash/index.html');
} else{
res.sendFile(__dirname + '/public/login.html');
}
});
如何在服务器端检查用户身份验证状态?
答案 0 :(得分:1)
您应该阅读有关JWT和OAuth之类的身份验证方法的信息。您可以使用中间件来检查特定用户是否已通过身份验证。你可以像护照这样的图书馆。您可以像这样创建自己的路由器级中间件。
let middleware = function (req, res, next) {
//Do your checking...
next();
};
app.get(['/dash' ],middleware, function(req, res) {
//check if the user is authenticated
if auth == true {
res.sendFile(__dirname + '/public/dash/index.html');
} else {
res.sendFile(__dirname + '/public/login.html');
}
});
答案 1 :(得分:1)
如建议的那样,有无数种验证用户身份的方法。 但我将通过一个简单的示例来帮助您:
const express = require('express');
var jquery = require('jquery');
var admin = require("firebase");
const USER = {
email: "john@doe.com",
password: "12345"
}
const authenticate = (req, res, next) => {
// parse the user out of your request
// e.g with bodyparser -> see npm
if (req.body.email === USER.email && req.body.password === USER.password) {
next()
} else {
res.send({ status: 401 });
}
}
// all routes
app.use(authenticate)
// certain route
app.get('/someRoute', authenticate, (req, res)) => {
// only successful authenticated user
// (in this case: john@doe.com) will
// have access to this route.
// ... code
}
此模式可以扩展为例如cookie,jwt,当然还可以扩展为可用于存储注册用户的数据库。