最新公告
  • 欢迎您光临码农资源网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!加入我们
  • 认证与授权

    认证与授权

    • 主题:“使用 JWT 实现身份验证”
    • 描述:如何使用 JSON Web Tokens (JWT) 实现身份验证和授权。

    内容:

    1.智威汤逊简介

    • 什么是 JWT:解释 JSON Web Token 及其结构。
    • 为什么选择 JWT:讨论使用 JWT 进行身份验证的好处。

    2. 设置智威汤逊

    • 安装依赖项:

      npm 安装 jsonwebtoken bcryptjs
      
    • 配置JWT:

    const jwt = require(‘jsonwebtoken’);
    const bcrypt = require(‘bcryptjs’);

    const Secret = 'your_jwt_secret'; // 在实际应用中使用环境变量
    ````
    

    3. 用户模型及注册

    • 定义用户架构:

      const userSchema = new mongoose.Schema({
        用户名:{ 类型:字符串,必需:true,唯一:true },
        密码:{ 类型:字符串,必需:true }
      });
      
      userSchema.pre('保存', 异步函数(下一个) {
        if (this.isModified('密码')) {
          this.password = 等待 bcrypt.hash(this.password, 10);
        }
        下一个();
      });
      
      const User = mongoose.model('用户', userSchema);
      
    • 用户注册端点:

      app.post('/register', async (req, res) => {
        const user = new User(req.body);
        尝试 {
          等待用户.save();
          res.status(201).json(用户);
        } 捕获(错误){
          res.status(400).json({ 错误: err.message });
        }
      });
      

    4. 用户登录和令牌生成

    • 登录端点:

      app.post('/login', async (req, res) => {
        const { 用户名, 密码 } = req.body;
        尝试 {
          const user = wait User.findOne({ 用户名 });
          if (用户 && 等待 bcrypt.compare(密码, user.password)) {
            const token = jwt.sign({ id: user._id, username: user.username }, Secret, { expiresIn: '1h' });
            res.json({ 令牌 });
          } 别的 {
            res.status(401).send('凭据无效');
          }
        } 捕获(错误){
          res.status(500).json({ 错误: err.message });
        }
      });
      

    5. 使用中间件保护路由

    • 身份验证中间件:

      const authMiddleware = (req, res, next) => {
        const token = req.header('授权').replace('承载', '');
        如果(!令牌){
          return res.status(401).send('访问被拒绝');
        }
        尝试 {
          const 解码 = jwt.verify(令牌, 秘密);
          req.user = 已解码;
          下一个();
        } 捕获(错误){
          res.status(400).send('无效令牌');
        }
      };
      
    • 保护端点:

      app.get('/profile', authMiddleware, async (req, res) => {
        尝试 {
          const user = wait User.findById(req.user.id);
          res.json(用户);
        } 捕获(错误){
          res.status(500).json({ 错误: err.message });
        }
      });
      

    6. 测试认证

    • 使用 Postman:演示如何注册用户、登录接收 JWT,以及使用 JWT 访问受保护的路由。
    • 示例工作流程
      1. 在 /register 注册新用户。
      2. 使用新用户登录 /login 即可获取令牌。
      3. 使用授权标头中的令牌访问受保护的 /profile 路由。

    第 7 周到第 10 周的详细分解包括解释和实践代码示例,以提供全面的学习体验。

    想要了解更多内容,请持续关注码农资源网,一起探索发现编程世界的无限可能!
    本站部分资源来源于网络,仅限用于学习和研究目的,请勿用于其他用途。
    如有侵权请发送邮件至1943759704@qq.com删除

    码农资源网 » 认证与授权
    • 7会员总数(位)
    • 25846资源总数(个)
    • 0本周发布(个)
    • 0 今日发布(个)
    • 293稳定运行(天)

    提供最优质的资源集合

    立即查看 了解详情