当前位置: 首页 > news >正文

邢台网站制作哪里好宽带推广方案

邢台网站制作哪里好,宽带推广方案,大连零基础网站建设教学哪里有,校园网站建设意义node ORM (sequelize)使用、查询、验证及express 基础框架的搭建及实例的使用 一、思路 第一步:肯定是用户要向接口传递邮箱、账号和密码了。 第二步:接口这边,先要验证。因为这里不是往数据库里存储数据,…

node ORM (sequelize)使用、查询、验证及express 基础框架的搭建及实例的使用

一、思路

第一步:肯定是用户要向接口传递邮箱、账号和密码了。
第二步:接口这边,先要验证。因为这里不是往数据库里存储数据,所以模型中的验证是用不了的。我们可以自己在路由里写点判断,确定用户提交了邮箱、账号和密码,而且不为空。
第三步:因为用户既可以用账号登录,也可以用邮箱登录。那我们接收数据的时候,就不要接收email和username了。可以接收一个自定义的东西,就叫做login,无论发送的是邮箱还是账号,都用login来接受。
第四步:用接收到的这个login,来查询数据库,判断当前用户是否存在。无论是查询邮箱,还是查询账号,只要查到那就是存在。
第五步:如果找到当前用户了,再来比对密码是否正确。
第六步:就算账号和密码都对得上,还要验证当前用户是不是管理员。因为后台只有管理员才能登录,普通用户是没有这种权限的。
第七步:如果以上都成功了。就要用一个叫做jwt的包,来生成token,也就是令牌。前端拿到这个token后,才能访问需要认证的接口。

包安装

//密码加密
npm i bcryptjs
生成token
npm i jsonwebtoken
专门用来管理环境变量
npm i dotenv
// 创建 HTTP 错误
http-errors

二、auth路由文件封装

const express = require('express');
const router = express.Router();
const { User } = require('../../models');
const { Op } = require('sequelize');
const { BadRequest, Unauthorized, NotFound } = require('http-errors');
const { success, failure } = require('../../utils/responses');
const bcrypt = require('bcryptjs');
const jwt = require('jsonwebtoken');/*** 管理员登录* POST /admin/auth/sign_in*/
router.post('/sign_in', async (req, res) => {try {const { login, password } = req.body;if(!login) {throw new BadRequest('邮箱/用户名必须填写。');}if(!password) {throw new BadRequest('密码必须填写。');}const condition = {where: {[Op.or]: [{ email: login },{ username: login }]}};// 通过email或username,查询用户是否存在const user = await User.findOne(condition);if (!user) {throw new NotFound('用户不存在,无法登录。');}// 验证密码const isPasswordValid = bcrypt.compareSync(password, user.password);if (!isPasswordValid)  {throw new Unauthorized('密码错误。');}// 验证是否管理员if (user.role !== 100) {throw new Unauthorized('您没有权限登录管理员后台。');}// 生成身份验证令牌const token = jwt.sign({userId: user.id}, process.env.SECRET, { expiresIn: '30d' });success(res, '登录成功。', { token });} catch (error) {failure(res, error);}
});module.exports = router;

三、app.js引入

// dotenv 必须放在所有的路由前面
require('dotenv').config();// 路由引入
const adminAuthRouter = require('./routes/admin/auth');
app.use('/admin/auth', adminAuthRouter);

四、根目录创建一个.env文件 生成密钥

1 、自定义生成

SECRET=hello

2、随机生成

1.在路由的顶部引用crypto,这个模块是Node.js自带的,无需安装。
const crypto = require('crypto');
2.然后去使用crypto模块,在登录方法的顶部,生成一个 32 位长的随机字符串,并打印出来。
  console.log(crypto.randomBytes(32).toString('hex'));
3.重新调用下接口,检查命令行里,可以看到已经生成成功了。我们将这一段,复制到.env文件中就好了。

4.完成后,别忘了,修改环境变量后,一定要重启服务。开发完成之后,代码里关于crypto的也都可以删掉了。

http://www.hkea.cn/news/452325/

相关文章:

  • 网站后台怎么添加图片视频app推广
  • 网站秒收录怎么做的经典软文案例和扶贫农产品软文
  • 珠海疫情最新情况厦门搜索引擎优化
  • 中国菲律宾历史战绩网站关键词优化工具
  • 西宁网站建设最好的公司哪家好优秀网站设计案例
  • 沧州做网站费用搜索引擎优化是做什么的
  • 社区网站推广方案线上运营的5个步骤
  • 湘潭学校网站建设 z磐石网络网站关键词优化教程
  • wordpress多程序用户同步汕头seo排名
  • 旅游网站 建设平台分析百度seo一本通
  • 怎么用dw做网站app开发网站
  • 昆山做网站的公司有哪些seo整站优化推广
  • 网站建设谈单情景对话青岛seo百科
  • 网站做自适应好不好网页分析报告案例
  • 大连手机自适应网站建设公司seo诊断站长
  • 有哪些好的网站十大电商代运营公司
  • 个人网页设计欣赏网站整站优化快速排名
  • 多少钱立案seo 公司
  • 医学类的网站做Google百度怎么优化排名
  • 手机网站怎样做枸橼酸西地那非片的功效与作用
  • 邯郸做wap网站的公司六六seo基础运营第三讲
  • 六安市建设银行网站seo编辑的工作内容
  • seo外包平台福州百度快照优化
  • 橙子建站广告怎么投放竞价网络推广
  • 中国公司查询网站网络公司起名
  • wordpress邮箱内容更改一键关键词优化
  • 楼市最新消息2022年房价走势seo网络推广经理
  • wordpress免费中文企业主题seo权重优化软件
  • 周口网站建设哪家好济南专业seo推广公司
  • 济南网站忧化怎么把抖音关键词做上去