首页 > 编程语言 >nodejs登录成功生成token并验证

nodejs登录成功生成token并验证

时间:2024-07-08 14:27:32浏览次数:11  
标签:const 登录 nodejs res express jwt Token token 验证

目录

1.安装必要的依赖包

2.创建Express应用

3.生成token

4.使用 `express-jwt` 验证Token

5. 错误处理

在Node.js中,nodejs登录成功生成token并验证通常涉及以下几个步骤:

  1. 安装必要的依赖包:常用的库包括 `express`用于创建服务器,`jsonwebtoken`用于处理JWT(JSON Web Token),`express-jwt`用于自动验证JWT并将解码后的Token信息附加到请求对象上,`body-parser`用于解析请求体。
  2. 创建Express应用:设置基本的Express应用和中间件。
  3. 生成Token:在用户登录成功后生成JWT。
  4. 验证Token:在需要保护的路由中间件中验证Token的有效性。
  5. 错误处理:为了更好地处理认证错误。

1.安装必要的依赖包

npm install express jsonwebtoken express-jwt body-parser

2.创建Express应用

const express = require('express');
const bodyParser = require('body-parser');
const jwt = require('jsonwebtoken');
const expressJwt = require('express-jwt');

const app = express();
const PORT = 3000;
// 你的密钥
const SECRET_KEY = 'your_secret_key';

app.use(bodyParser.urlencoded({ extended: true }));

app.listen(PORT,()=>{
    console.log(`server runnning at 127.0.0.1:${PORT}`);
})

3.生成token

在用户登录成功后生成Token。

app.post('/login', (req, res) => {
    const { username, password } = req.body;

    // 验证用户名和密码(这里只是一个示例,实际应用中应查询数据库)
    if (username === 'admin' && password === 'admin') {
        // 生成Token
        const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });
        res.send({ code:1,msg:'登录成功',data:token });
    } else {
        res.status(401).send({code:0,msg:'账号或密码错误'});
    }
});

4.使用 `express-jwt` 验证Token

全局使用 express-jwt 中间件进行Token验证。

// 使用express-jwt中间件进行Token验证
app.use(
    expressJwt({ secret: SECRET_KEY, algorithms: ['HS256'] }).unless({ path: ['/login'] })
);
// 受token验证保护的路由
app.get('/protected', (req, res) => {
    res.send('This is a protected route');
});

 在需要保护的路由中使用 express-jwt 中间件进行Token验证。

// 使用express-jwt中间件进行Token验证
const authenticateJwt = expressJwt({ secret: SECRET_KEY, algorithms: ['HS256'] });
// 受token验证保护的路由
app.get('/protected',authenticateJwt, (req, res) => {
    res.send('This is a protected route');
});

5. 错误处理

为了更好地处理认证错误,可以添加一个错误处理中间件:

app.use((err, req, res, next) => {
    if (err.name === 'UnauthorizedError') {
        res.status(401).send({code:0,msg:'身份验证失败'});
    } else {
        next(err);
    }
});

通过上述步骤,你可以使用 `express-jwt` 在Node.js应用中实现简便且安全的Token验证功能。 

标签:const,登录,nodejs,res,express,jwt,Token,token,验证
From: https://blog.csdn.net/m0_62442882/article/details/140265865

相关文章

  • [NodeJS] NodeJS运行原理简记
    NodeJS的基本组成NodeJS是JavaScript运行时,主要由V8引擎和libuv组成,其中V8使用javascript和c++编写,而libuv是纯c++编写的,二者都是开源的。V8引擎用于将javascript代码转换为计算机可以执行的机器码;而libuv则负责完成异步IO、与操作系统交互(文件系统和网络模块)、事件循......
  • Tool-Gitlab-重置数据库,修复server迁移token异常
    Tool-Gitlab-重置数据库,修复server迁移token异常迁移gitlab的server数据之后,导致token异常影响:修改工程配置信息,提交时页面报错502sudogitlab-railsdbconsole--databasemainDELETEFROMci_group_variables;DELETEFROMci_variables;UPDATEprojectsSETrunners_token......
  • Delphi LDAP对象管理(用户登录认证、组、组织)
    unitlogin;interfaceusesWindows,Messages,SysUtils,Variants,Classes,Graphics,Controls,Forms,uniGUITypes,uniGUIAbstractClasses,uniGUIClasses,uniGUIRegClasses,uniGUIForm,uniButton,uniGUIBaseClasses,uniEdit,REST.Types,uniMemo,REST.Client,......
  • Github Copilot登录使用,很稳定的chat,不妨试试
    GithubCopilot代码补全等功能,提高写代码的效率获取地址:https://web.52shizhan.cn/activity/copilot如果之前是激活器激活的,请到环境变量里删除相关的copilot配置。①发你注册的github账号的邮箱或用户名给客服,客服邀请你进入组织时会发送一封邮件到你注册github的邮箱......
  • vCenter登录失败报500错误:no healthy upstream
    过了个周末登录vCenter的时候提示:HTTP状态500-内部服务器错误;重启服务后提示:nohealthyupstream。如下图:看到这个情况,肯定就是部分不服务异常了或者压根就没有启动。至于说因为啥异常还不得而知。想着登录管理服务(访问端口:5480)重启一下异常服务,结果提示证书过期。问题......
  • 双 Token 无感刷新机制实现
    ✅作者简介:热爱Java后端开发的一名学习者,大家可以跟我一起讨论各种问题喔。......
  • nodejs和npm安装与配置
    nodejs官网:http://nodejs.cn/百度网盘下载链接:https://pan.baidu.com/s/1RfjeN1bt-I-tf351xi8cgw提取码:sybk下载官网的稳定版msi安装包nodejs默认安装配置了npm进入cmd命令行(以管理员身份打开)node-v npm-v        查看版本,检查安装设置npm淘宝镜像......
  • 将nodejs迁移到D盘
    参考双击安装,指定d盘查看文件夹查看环境变量,自动添加如下Path=D:\software\nodejs\打开cmd验证C:\Users\dogle>node-vv18.14.2C:\Users\dogle>npm-v9.5.0C:\Users\dogle>echo%PATH%C:\ProgramFiles(x86)\CommonFiles\Oracle\Java\javapath;C:\W......
  • nodejs 安装使用ip2region - 实时精准的IP地址到区域运营商查询
    ip2region简介ip2region是一个高性能且高准确度的离线IP地址定位库和IP定位数据管理框架。它能够根据IP地址解析出对应的位置信息,包括国家、地区、省份、城市以及互联网服务提供商(ISP)。以下是ip2region的一些关键特性:高准确率:它声称有99.9%的准确率,这使得它......
  • Sqlalchemy 连接SQL Server 登录失败
    实验系统环境Windows平台Sqlalchemy2.0.23Python3.10SQLServer2012aioodbc0.5.0问题详情sqlalchemy.exc.InterfaceError:(pyodbc.InterfaceError)('28000','[28000][Microsoft][ODBCDriver17forSQLServer][SQLServer]登录失败。该登录名来自不受信任的域,不......