返回

Express 与 JWT 珠联璧合,畅谈用户登陆授权掌控之道

前端

在软件开发的世界里,用户登陆授权扮演着至关重要的角色。它就好比一道坚固的门户,守护着系统的安全,同时为合法用户敞开通往宝藏的大门。本文将聚焦于如何使用 express 框架和 JSON Web Token (JWT) 来实现用户登陆授权控制。

express:搭建坚实的框架

express 是一个精简而强大的 Node.js 框架,它以其简洁明了的语法和灵活的扩展性赢得了众多开发者的青睐。在用户登陆授权的舞台上,express 承担着搭建坚实框架的重任。它将处理请求、响应数据、管理路由等任务统统揽入怀中,为我们构建一个稳定可靠的应用奠定了坚实的基础。

JWT:铸就安全认证的利器

JWT,全称 JSON Web Token,是一个开放标准,它采用 JSON 格式,将用户身份信息安全地封装其中。借助 JWT,我们可以轻松实现用户身份验证和授权。当用户成功登陆时,服务器会签发一个 JWT,并将其返回给客户端。客户端在后续的请求中携带该 JWT,服务器便可通过验证 JWT 来确认用户的身份,从而实现授权控制。

express 与 JWT 珠联璧合

express 和 JWT 的结合,犹如天作之合,它们优势互补,共同谱写出用户登陆授权的华美篇章。express 提供了便捷的框架和丰富的中间件,使我们能够轻松处理用户请求,验证 JWT,并根据用户的身份信息进行授权控制。而 JWT 则凭借其安全、便捷、跨平台等特性,为用户身份验证和授权提供了强有力的支持。

实战演练:一步步构建用户登陆授权系统

为了让您亲身体验 express 和 JWT 的魅力,我们准备了一个实战案例。我们将一步步搭建一个完整的用户登陆授权系统,让您从零开始,领略这两大技术的实际应用。

  1. 安装必要的依赖包

    npm install express jsonwebtoken
    
  2. 创建 express 应用

    const express = require('express');
    const app = express();
    
  3. 配置 JWT 密钥

    const jwtSecret = 'YOUR_SECRET_KEY';
    
  4. 定义登陆路由

    app.post('/login', (req, res) => {
      // 检查用户名和密码是否正确
      const username = req.body.username;
      const password = req.body.password;
    
      if (username === 'admin' && password === '123456') {
        // 创建 JWT
        const token = jwt.sign({ username }, jwtSecret, { expiresIn: '1h' });
    
        // 将 JWT 返回给客户端
        res.json({ token });
      } else {
        res.status(401).json({ message: 'Invalid credentials' });
      }
    });
    
  5. 验证 JWT 并授权

    app.use((req, res, next) => {
      // 从请求头中提取 JWT
      const token = req.headers['authorization'];
    
      // 验证 JWT
      if (token) {
        jwt.verify(token, jwtSecret, (err, decoded) => {
          if (err) {
            // JWT 验证失败
            res.status(401).json({ message: 'Invalid token' });
          } else {
            // JWT 验证成功,将用户信息附加到请求对象上
            req.user = decoded;
            next();
          }
        });
      } else {
        // 没有提供 JWT
        res.status(401).json({ message: 'No token provided' });
      }
    });
    
  6. 受保护的路由

    app.get('/protected', (req, res) => {
      // 检查用户是否已登陆
      if (req.user) {
        // 用户已登陆,允许访问受保护的资源
        res.json({ message: 'Welcome, ' + req.user.username });
      } else {
        // 用户未登陆,拒绝访问受保护的资源
        res.status(401).json({ message: 'Unauthorized' });
      }
    });
    
  7. 启动应用

    app.listen(3000, () => {
      console.log('Server is listening on port 3000');
    });
    

结语

express 和 JWT 强强联手,为我们构建用户登陆授权系统提供了极为便捷、高效的解决方案。通过本文的学习,您已经掌握了这两大技术的精髓,现在,是时候亲自动手,创造属于您自己的用户登陆授权系统,为您的应用程序增光添彩了!