Javascript NodeJs Express会话管理
我这里有一个问题,我一直试图在互联网上搜索,甚至在Stackoverflow上搜索,但我没有得到我需要的确切解决方案。我正在创建一些由基本身份验证驱动的应用程序,其中用户需要在登录时登录,我希望Javascript NodeJs Express会话管理,javascript,node.js,express,session,Javascript,Node.js,Express,Session,我这里有一个问题,我一直试图在互联网上搜索,甚至在Stackoverflow上搜索,但我没有得到我需要的确切解决方案。我正在创建一些由基本身份验证驱动的应用程序,其中用户需要在登录时登录,我希望sendFile()他们将成为主页,我希望主页上能够检查会话是否已设置,如果未设置,则使用NodeJS、Javascript以及Express重定向到登录 如果是在PHP上,则类似于: session_start(); if(!isset($_SESSION['user_id']) locati
sendFile()
他们将成为主页,我希望主页上能够检查会话是否已设置,如果未设置,则使用NodeJS、Javascript以及Express重定向到登录
如果是在PHP上,则类似于:
session_start();
if(!isset($_SESSION['user_id'])
location('header: login.php')
<html>
<?php
echo "Your user id is: ".user_id;
?>
</html>
session_start();
如果(!isset($\u会话['user\u id']))
位置('标题:login.php')
基本上,我希望在会话中设置id,并能够在主页/其他页面中读取id,而不必仅在服务器上读取,也可以在home.html中读取。您可能不希望使用sendFile,而可能希望使用res.redirect将用户发送到其他端点。例如,此端点可以是您的主页,但我通常最好使用正确的express渲染,而不是sendFile,除非您尝试让用户下载blob文件 您可以设置端点,例如:
const express = require('express');
const app = express();
// setup render system here...
app.use('/', (req, res) => {
res.render('home');
});
这将调用主模板上的呈现。若要设置模板引擎,可以使用类似或其他呈现引擎。这将允许您在返回HTML之前将值注入HTML,如果您希望添加错误消息,这可能会很有用
配置好后,您可以创建一个名为home.hbs的模板(位置和扩展名取决于您的库和设置)
然后可以使用express session检查会话
app.use('/secured', (req, res) => {
if (req.session) {
// We have a session! Now you can validate it to check it's a good session
} else {
// No session at all, redirect them to the home screen.
// You might want to make this the login screen instead.
res.redirect('/');
}
});
一些最终的演示代码可能如下所示
const express = require('express');
const app = express();
// Setup express session...
const session = require('express-session');
app.use(session({
secret: 'keyboard cat',
resave: false,
saveUninitialized: true,
cookie: { secure: true }
}));
// Setup the vie engine...
var hbs = require('express-hbs');
// Use `.hbs` for extensions and find partials in `views/partials`.
app.engine('hbs', hbs.express4({
partialsDir: __dirname + '/views/partials'
}));
app.set('view engine', 'hbs');
app.set('views', __dirname + '/views');
// Place a file called `views/home.hbs` in the views folder at the top level of your project.
// Fill it with some html, all html is valid, handlebars just adds additional features for you.
// A public route which requires no session
app.use('/', (req, res) => {
// Renders "views/home.hbs"
res.render('home');
});
// A secured route that requires a session
app.use('/secured', (req, res) => {
if (req.session) {
// We have a session! Now you can validate it to check it's a good session
} else {
// No session at all, redirect them to the home screen.
// You might want to make this the login screen instead.
res.redirect('/');
}
});
请注意,我实际上没有运行此代码,因此可能存在一些语法错误等。您使用passport进行身份验证吗?没有,先生,我只是使用express session,我是从中了解到的。但是现在,我不再只渲染//res.send(“您只有在登录后才能看到此内容”);//我想发送一个文件,例如home.html,并能够读取home.html中的用户名。提前谢谢