下面是以Express实现登录验证的完整攻略。
步骤一:搭建Express应用
首先,我们需要安装Express,使用以下命令:
npm install express --save
安装完成后,在你的项目中添加以下代码:
const express = require('express');
const app = express();
const port = 3000;
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.listen(port, () => {
console.log(`Example app listening at http://localhost:${port}`);
});
现在你可以通过浏览器打开 http://localhost:3000
查看你的应用。
步骤二:添加登录路由
接下来,我们需要添加登录路由。为了演示方便,我在这里使用一个简单的示例:
app.get('/login', (req, res) => {
res.send(`
<h1>Login Page</h1>
<form method="POST" action="/login">
<label>
Username:
<input type="text" name="username">
</label>
<br>
<label>
Password:
<input type="password" name="password">
</label>
<br>
<button type="submit">Login</button>
</form>
`);
});
这将创建一个包含输入字段和登录按钮的简单登录表单。
步骤三:处理POST请求
现在,我们需要处理提交的登录表单。为此,我们需要安装一个中间件称为 body-parser
,它将解析 POST 请求的主体并使其可用于 Express 应用程序。
使用以下命令安装 body-parser
:
npm install body-parser --save
现在,我们可以将以下代码添加到我们的 Express 应用程序中:
const bodyParser = require('body-parser');
// parse application/x-www-form-urlencoded
app.use(bodyParser.urlencoded({ extended: false }));
// parse application/json
app.use(bodyParser.json());
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (username === 'admin' && password === '123456') {
res.send('Login success');
} else {
res.send('Login failed');
}
});
这段代码将接收 POST 请求并检查登录表单中的用户名和密码。如果验证通过,则返回“登录成功”,否则返回“登录失败”。
步骤四:记录用户状态
现在,我们已经能够验证用户是否成功登录了。但是,我们还需要确保用户在打开其他受保护的页面时仍然被认为是已登录的。为此,我们需要记录用户状态。
我们可以通过在处理登录请求时将用户信息添加到 session 中来实现这一点。可以使用 express-session
从头开始创建会话,或使用像 connect-mongo
这样的包与 MongoDB 进行会话管理。
以下是使用 express-session
创建会话的示例:
const session = require('express-session');
app.use(session({
secret: 'this is secret',
resave: true,
saveUninitialized: true,
}));
现在,我们可以将以下代码添加到我们的登录路由中:
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (username === 'admin' && password === '123456') {
req.session.user = { username };
res.send('Login success');
} else {
res.send('Login failed');
}
});
这将在用户登录成功后将 username 添加到 session 中。
步骤五:验证用户状态
现在,我们已经能够将用户信息添加到 session 中并在登录后将其保存。但是,我们需要确保用户在打开受保护的页面时仍然被认为是已登录的。为此,我们可以创建一个中间件来验证用户状态。
以下是一个验证用户状态的中间件的示例:
const requiresLogin = (req, res, next) => {
if (req.session && req.session.user) {
return next();
}
return res.redirect('/login');
};
app.get('/profile', requiresLogin, (req, res) => {
res.send(`Welcome, ${req.session.user.username}`);
});
这段代码将检查 session 中是否存在 user 对象。如果存在,则继续处理请求。否则,它将重定向到登录页面。
上面的 /profile
路由是一个受保护的路由,它只能由登录用户访问。它使用 requiresLogin
中间件来确保用户已经登录。
这就是以Express实现登录验证的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Express实现登录验证 - Python技术站