【Express.js】JWT基础鉴权

这篇具有很好参考价值的文章主要介绍了【Express.js】JWT基础鉴权。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

JWT基础鉴权

Web安全是Web应用中非常重要的一环,主要由后端和服务器承担安全保障
面对请求源,后端有着各种各样的鉴权机制: session,cookie,token,jwt,OAuth,OAuth2,api-key,signature…
本节以jwt为例,演示一个极简的token鉴权

准备工作

  • 拷贝第一节HelloWorld项目
  • 安装一种jwt依赖(本节使用jsonwebtoken)

实践

接下来我们使用jsonwebtoken来实现最常见的登录鉴权,登录成功后返回一个token,之后凭借这个token去访问另外的路由

  • 首先引入jwt依赖
const jwt = require('jsonwebtoken').default;
  • 定义一个密钥

之后我们会利用这个密钥生成token,和检验token

const secret = 'mysecretkey';
  • 写个登录时生成token的函数

传入用户名和密码,检验密码,正确就生成一个token
生成token: jwt.sign(标志,密钥,选项(生命周期等))

function getToken(user) {
    let token = null;
    const payload = {
      uname: user.uname,
    };
    if (user.uname == 'root' && user.passwd == 'root') {
        token = jwt.sign(payload, secret, { expiresIn: '1h' });
    }
    return token;
}
  • 写一个访问时检验token的函数

传入req,res,next,从请求头中取出名字为’token’的一个token,若请求头里不带token则返回请求报告没token,token校验通过了则放行

function checkToken(req, res, next) {
    const token = req.headers['token'];
    if (!token) return res.status(401).json({ message: 'No token provided.' });
    jwt.verify(token, secret, (err, decoded) => {
      if (err) return res.status(500).json({ message: 'Failed to authenticate token.' });
      req.userId = decoded.id;
      next();
    });
}  
  • 编写登录接口
app.post('/login', (req, res) => {
    let user = req.body;
    let token = getToken(user);
    if(token!=null) {
        res.send(token);
    } else {
        res.status(401).send("wrong");
    }    
});
  • 编写一个需要校验token的接口

将token检验函数作为中间件挂载到 /root 路由上

app.get('/root', checkToken, (req, res) => {
    res.send('hello root user!');
});

接口测试

尝试用api调试工具先访问 login 接口,利用正确的用户名和密码获取token,然后用得到的token去访问 root 接口文章来源地址https://www.toymoban.com/news/detail-492834.html

下一节-全局错误处理

到了这里,关于【Express.js】JWT基础鉴权的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其一)

    最近不知怎么的,自从学了WebAPI(为什么是这个,而不是MVC,还不是因为MVC的Razor语法比较难学,生态不如现有的Vue等框架,webapi很好的结合了前端生态)以后,使用别人的组件一帆风顺,但是不知其意,突然很想自己实现一个基于的JWT认证服务,来好好了解一下这个内容。 自

    2023年04月19日
    浏览(25)
  • AspNetCore 成长杂记(一):JWT授权鉴权之生成JWT(其二)

    前面说了用第三方类库生成JWT的故事,给我带来了很大的方便,并且我也承诺要写一篇用常规方法生成JWT的文章( 一般都是用微软官方的类库 ),因此才有了这篇文章。 另外,在前面的文章中,我要纠正一下一些错误JWT的整个结构决定了JWT只能作为临时的授权认证解决方案,

    2023年04月26日
    浏览(24)
  • .Net Core Jwt鉴权授权

    目录 简介 基于.Net Core 验证方式 Jwt获取Token 引入三方包 生成Token UserInfo JwtConfig WebApi测试(获取Token) Program.cs appsetting.json Controller .Net Core 验证(webApi) Progarm.cs Contorller .Net Core 授权 简介 Program.cs JwtAuthorization.cs 注意 Autofac 注册授权服务 Controller 注意 jwt触发委托 Jwt分为三段 通过远

    2024年02月13日
    浏览(24)
  • Springboot实现简单JWT登录鉴权

    登录需要鉴权是为了保护系统的安全性和用户的隐私。在一个 Web 应用中,用户需要提供一定的身份信息(例如用户名和密码)进行登录,登录后系统会为用户生成一个身份令牌(例如 JWT Token)来标识用户的身份。 鉴权的主要目的是确保只有经过身份验证的用户才能访问系统

    2024年02月13日
    浏览(22)
  • .NET WebAPI 运用JWT鉴权授权

    1:引用需要的程序集 :System.IdentityModel.Token.JWT 2:创建一个新的控制器,用于授权功能 3:服务中进行注册 4:启动鉴权授权 5:在需要的鉴权授权的API  中调用 6:发送请求接口时候  请求头 {Authorzation:\\\"bearer\\\"+空格 + token}

    2024年02月14日
    浏览(26)
  • 在Nodejs中使用JWT进行鉴权

    JSON Web Token(JWT)是一种用于在web上传递信息的标准,它以JSON格式表示信息,通常用于身份验证和授权。 JWT由三个部分组成:Header(头部)、Payload(负载)和Signature(签名)。它们用点号分隔开,形成了一个JWT令牌。 Header Header(头部)是JWT结构的第一部分,它是一个包含关

    2024年02月10日
    浏览(34)
  • Node.js基本概念、特点、用途和常用模块,以及Express框架开发一个web应用

    目录 一、Node.js的基本概念和特点 二、Node.js的用途 三、Node.js的常用模块 四、使用Node.js进行Web开发 1. 安装Node.js 2. PyCharm配置Node.js 3. 使用http库编写一个web服务 4. 使用Express框架构建Web应用程序 5. 调试代码 6. 发布应用程序 参考文章  Node.js系列文章推荐阅读: JavaScript匿名函

    2024年02月07日
    浏览(68)
  • JWT加密解密登录鉴权逻辑是什么?

    JWT(JSON Web Token)是一种用于进行认证和授权的开放标准,它可以安全地传输信息,通常用于实现身份验证和鉴权逻辑。 以下是使用JWT进行登录鉴权的一般逻辑: 1:用户登录: 用户提供用户名和密码进行登录。 服务器验证用户提供的凭据是否有效。 2:生成JWT: 服务器验证

    2024年02月06日
    浏览(28)
  • 前端刷新token,判断token是否过期(jwt鉴权)

    4.1 什么是 JWT JWT 是 Auth0 提出的通过 对 JSON 进行加密签名来实现授权验证的方案; 就是登录成功后将相关用户信息组成 JSON 对象,然后对这个对象进行某种方式的加密,返回给客户端; 客户端在下次请求时带上这个 Token; 服务端再收到请求时校验 token 合法性,其实也就是在

    2024年02月03日
    浏览(39)
  • Node.js npm V8 React Express的运行配合关系:构建JavaScript应用的基石

    目录 Node.js 和 V8 引擎 Node.js 和 npm LTS(Long Term Support) React Node.js的作用 Express Node.js 和 V8 引擎 Node.js 使用 Google 的 V8 JavaScript 引擎 来执行 JavaScript 代码。V8 是一个高性能的 JavaScript 和 WebAssembly 引擎,用于在 Google Chrome 浏览器和 Node.js 中运行 JavaScript。 V8 引擎的更新 通常包括

    2024年03月12日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包