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

有什么好的网站设计思想的博客wordpress插件 速度

有什么好的网站设计思想的博客,wordpress插件 速度,江西做网站,宜宾网站建设公司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.yayakq.cn/news/852344/

相关文章:

  • 查看邮箱注册了哪些网站江西建网站做优化
  • 宜昌网站建设厂家网站视频源码地址
  • 织梦网站建设实训心得永济市做网站
  • 湖南网站优化外包费用做a 需要制作网站
  • 没有做防注入的网站优化师培训机构
  • 做电影网站详细教程平台设计网站公司电话
  • wordpress 大学网站建设英文网站的请示
  • 成品网站模块自己主机做网站服务器吗
  • 大型网络建站公司提供东莞网站建设价格
  • 网站qq联系怎么做模板网站视频
  • 做电影网站违法大连工程建设信息网站
  • 网站制作计划书y2学年做的租房网站
  • 建设工程规范发布网站网页版微信登陆
  • 盐城做网站的哪个公司好凡科商城小程序收费吗
  • 盐城网站制作哪家好成都软件培训机构排名榜
  • 生活分类信息网站大全凡科做网站的方法
  • 云尚网络科技有限公司网站建设网站页面设计教程
  • dede手机网站模板制作新手做网站应该注意什么
  • 网页制作视频的网站建设seo的形式有哪些
  • 网站维护费企业网站的建设要注意什么
  • 查找人网站 优帮云中国食品网
  • 华为云做网站不能修改页面品牌建设工作计划
  • 服务器网站维护湖北网站建站系统哪家好
  • 微网站费用如何制作产品网站模板下载
  • 网站网页设计公司腾讯云服务器备案
  • 建站行业有前途第一个做装修的网站
  • 网站 高清 标清如何做最简单的wordpress主题
  • 盐城营销型网站湖南网站托管哪家好
  • 建站网站破解版达浒镇网站建设公司
  • 专业做鞋子网站有哪些单页网站的制作