Nodejs node-express | 实现登录验证和授权

发布于 1周前 作者 h691938207 来自 nodejs/Nestjs

Nodejs node-express | 实现登录验证和授权

node-express | 实现登录验证和授权

账号登录验证和权限设置,可以说是任何一个系统都必须具备的基本功能,而方式是从最传统的账号密码登录,到社交账号绑定不等。

1、登录验证(Authentication)

先要考虑登录有什么用?

最基本的目的是为了让系统在很多人中认得你,你上次来干什么了,做到哪一步了,一句话概括是:记得之前的你。

另外的目的是为了不让其他人冒充你。概括为:确保真的是你。

以上两个目的的实现需要两个中间件处理。

会话(session) ---> 记得之前的你

Passport ---> 确保真的是你

2、授权( Authorization )

登录验证是为了验证你的身份,有机会进入系统的大门。而授权是为了确定做的操作,都是被允许的,你有被赋予权限。系统需要知道你是普通用户,还是论坛坛主,又或者是整个系统的管理员。

Authorization

运行部署:

1、数据库用户名、密码、数据库名都是test,clone 下来后要先建立一个数据库,或者修改连接数据库。

2、npm install //安装依赖

3、npm start //启动项目

:pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: 感觉不错,star 一下,谢谢啦! :pray: :pray: :pray::pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray: :pray:


2 回复

: 感觉不错,star 一下,谢谢啦!


在Node.js中使用Express框架实现登录验证和授权,通常会结合中间件和会话管理。以下是一个简单的示例,展示了如何实现这一功能。

首先,安装必要的依赖:

npm install express express-session body-parser bcryptjs jsonwebtoken

接下来,设置Express服务器和中间件:

const express = require('express');
const session = require('express-session');
const bodyParser = require('body-parser');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');

const app = express();
app.use(bodyParser.json());
app.use(session({ secret: 'your_secret_key', resave: false, saveUninitialized: true }));

// 示例用户数据
let users = [{ username: 'user', password: bcrypt.hashSync('pass', 10) }];

// 登录验证
app.post('/login', (req, res) => {
    const { username, password } = req.body;
    const user = users.find(u => u.username === username && bcrypt.compareSync(password, u.password));
    if (user) {
        const token = jwt.sign({ username: user.username }, 'your_jwt_secret');
        req.session.token = token;
        res.json({ token });
    } else {
        res.status(401).json({ error: 'Invalid credentials' });
    }
});

// 受保护的路由
app.get('/protected', (req, res) => {
    if (req.session.token) {
        res.json({ message: 'You are authorized' });
    } else {
        res.status(403).json({ error: 'Forbidden' });
    }
});

app.listen(3000, () => console.log('Server started on port 3000'));

这个示例演示了基本的登录验证和授权机制。注意,实际项目中应考虑更多的安全措施,比如使用HTTPS、验证JWT的过期时间等。

回到顶部