Express.js实现注册和登录

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

 注册接口

注册接口,用户提供必要的注册信息(如用户名和密码),服务器对用户进行验证并创建用户账号

// 注册接口
app.post('/register', async (req, res) => {
  try {
    const { username, email, password } = req.body;

    // 检查用户名和邮箱是否已被注册
    if (users.some(user => user.username === username)) {
      return res.status(400).json({ error: '用户名已被注册' });
    }

    if (users.some(user => user.email === email)) {
      return res.status(400).json({ error: '邮箱已被注册' });
    }

    // 使用bcrypt对密码进行哈希处理
    const hashedPassword = await bcrypt.hash(password, 10);

    // 创建新用户对象
    const user = {
      id: Date.now().toString(),
      username,
      email,
      password: hashedPassword
    };

    // 将用户信息存储到数据库
    users.push(user);

    // 创建访问令牌
    const token = jwt.sign({ userId: user.id }, 'secretKey');

    res.status(201).json({ message: '注册成功', token });
  } catch (error) {
    res.status(500).json({ error: '注册失败' });
  }
});

登录接口

登录接口,用户提供登录凭据(如用户名和密码),服务器验证凭据的正确性并颁发访问令牌

app.post('/login', (req, res) => {
  // 获取登录凭据
  const { username, password } = req.body;
  // 在此处进行用户名和密码的验证,如检查用户名是否存在、密码是否匹配等;验证成功,颁发访问令牌;
  const token = createAccessToken(username);

  // 将访问令牌写入 Cookie
  res.cookie('token', token, {
    httpOnly: true,
    secure: true, // 仅在 HTTPS 连接时发送 Cookie
    sameSite: 'Strict' // 限制跨站点访问,提高安全性
  });

  // 返回登录成功的响应
  res.status(200).json({ message: '登录成功' });
});

校验接口 

校验登录状态,服务器将校验请求中的登录凭据(Cookie 或访问令牌)的有效性

app.get('/protected', (req, res) => {
  // 从请求的 Cookie 中提取访问令牌
  const token = req.cookies.token;
  // 或从请求头部中提取访问令牌,如果采用前端存储和发送访问令牌方式;示例代码,需根据实际情况进行解析 const token = req.headers.authorization.split(' ')[1];

  // 检查访问令牌的有效性
  if (!token) {
    return res.status(401).json({ error: '未提供访问令牌' });
  }

  try {
    // 验证访问令牌
    const decoded = verifyAccessToken(token);

    // 在此处进行更详细的用户权限校验等操作

    // 返回受保护资源
    res.status(200).json({ message: '访问受保护资源成功' });
  } catch (error) {
    res.status(401).json({ error: '无效的访问令牌' });
  }
});

前端存储和发送访问令牌

// 从存储中获取访问令牌
const token = localStorage.getItem('token');

// 设置请求头部
const headers = {
  'Authorization': `Bearer ${token}`
};

// 发送请求时,手动设置请求头部
fetch('/protected', { headers });

使用前端的 localStorage 来存储访问令牌,并在发送请求时手动设置了请求头部的 Authorization 字段。

注意:无论使用哪种方式,都需要在服务器端进行访问令牌的验证和安全性检查,以确保请求的合法性和保护用户数据的安全。文章来源地址https://www.toymoban.com/news/detail-835003.html

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

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

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

相关文章

  • 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)
  • Express实战个人订阅号实现网站登录

    今天我们来实现一个使用个人订阅号实现网站的功能,后端使用的是 express 。其它框架原理基本一致,只是定义路由或返回响应数据部分代码跟 express 有所出入。先来一波效果图: 20 年 3 月在掘金写过一篇文章,介绍了使用 express 开发微信公众号的案例: 原文地址。当时使

    2024年02月05日
    浏览(74)
  • 用前端的语言写后端——Node.js之Express

    Express 是一种流行的模型视图控制器(MVC)Node.js框架,具有快速、极简和灵活的优点,为Web和移动应用程序开发提供了强大的功能集合。 最受欢迎的Node.js框架! 安装Node.js(你肯定已经安装好了Node.js,这点我们无需多言) 为你的应用创建一个目录,进入此目录并以此目录为你

    2024年03月21日
    浏览(38)
  • 安全开发-JS应用&NodeJS指南&原型链污染&Express框架&功能实现&审计&WebPack打包器&第三方库JQuery&安装使用&安全检测

    Node.js是运行在服务端的JavaScript 文档参考:https://www.w3cschool.cn/nodejs/ Nodejs安装:https://nodejs.org/en 三方库安装 express:Express是一个简洁而灵活的node.js Web应用框架 body-parser:node.js中间件,用于处理 JSON, Raw, Text和URL编码的数据。 cookie-parser:这就是一个解析Cookie的工具。通过re

    2024年02月11日
    浏览(48)
  • Node.js: express + MySQL实现修改密码

            实现修改密码,本篇文章实现修改密码只考虑以下几个方面:         (1),获取旧密码         (2),获取新密码         (3),将获取到的旧密码与数据库中的密码进行比对(避免修改错用户)         (4),新密码与进密码进行比对,新密码和旧密码不

    2024年02月16日
    浏览(47)
  • node.js(express.js)+mysql实现新增文章分类功能

    表单验证 定义路由 实现新增文章分类的功能的函数 结果

    2024年01月23日
    浏览(28)
  • Node.js: express + MySQL + Vue实现图片上传

            前段时间用Node.js: express + MySQL + Vue + element组件做了一个小项目,记录一下图片上传的实现。         将图片存入数据库有两种方法:                 1,将图片以二进制流的方式存入数据库(数据库搬家容易,比较安全,但数据库空间的消耗大,访问会比较缓慢)

    2024年02月07日
    浏览(84)
  • python web 开发与 Node.js + Express 创建web服务器入门

    目录 1. Node.js + Express 框架简介 2  Node.js + Express 和 Python 创建web服务器的对比 3 使用 Node.js + Express 创建web服务器示例 3.1 Node.js + Express 下载安装 3.2 使用Node.js + Express 创建 web服务器流程         Node.js + Express 是一种常用于构建 Web 应用程序的开发堆栈,其中 Node.js 是运行

    2024年02月10日
    浏览(45)
  • 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)
  • 【Node.js实战】一文带你开发博客项目之Express重构(博客的增删查改、morgan写日志)

    个人简介 👀 个人主页: 前端杂货铺 🙋‍♂️ 学习方向: 主攻前端方向,也会涉及到服务端 📃 个人状态: 在校大学生一枚,已拿多个前端 offer(秋招) 🚀 未来打算: 为中国的工业软件事业效力n年 🥇 推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2Vue3项目实战 🥝

    2024年02月06日
    浏览(54)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包