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

介绍小说的网站模板下载地址wordpress修改首页调用

介绍小说的网站模板下载地址,wordpress修改首页调用,网站开发研究总结,济南seo网络优化公司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/753332/

相关文章:

  • 网站建设花都區鸿蒙系统ui设计规范
  • 昆明手机网站建设和布克赛尔网站建设
  • 浙江网站建设流程广州广告设计公司
  • 阿里巴巴网站建设缺点沈阳旅游团购网站建设
  • 怎么宣传网站医生做学分在哪个网站
  • 做网站的文案怎么写福建做网站
  • 优秀企业网站设计制作企业网站建设用标语
  • 东营专业网站建设公司排行wordpress电影页面代码
  • jsp网站维护网站数据库如何建设
  • 做设计挣钱的网站免费seo排名优化
  • 建设银行鄂州分行官方网站wordpress 商品 插件
  • 网站建设优化需要懂那些知识资产管理wordpress
  • 百度网站改版工具配置网站开发
  • 本土建站工作室太原建站模板大全
  • 清远佛冈住房和城乡建设局网站网站底部源码
  • 新乡网站建设哪家专业seo公司是怎么做的
  • 手机网站锁定竖屏看代码百度收录排名
  • 公司网站制作要多少钱西安官网优化技术
  • 咸宁网站seo排名广西建设职业技术学院图书馆网站
  • 电商网站建设期末考试南阳专业做网站
  • 合肥网站开发 合肥网站优化wordpress 父分类显示子分类文章
  • 建立免费网站的步骤新华社最新消息的新闻
  • 合肥网站代运营公司有哪些一二三四视频社区在线一中文
  • 网站建设一般涉及后台功能免费响应式网站模板
  • 网站程序代码什么是网络营销4p策略
  • 网站开发主要创新点网站实现隶书繁体
  • 做电商引流软文网站设计网站汇总
  • 网站建设衤金手指花总十五免费在线响应式网站自助建站
  • 宣汉县建设局网站吸引企业做网站的文章内容
  • 网站建设小程序网站建设订流量什么意思