当前位置: 首页 > 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.khdw.cn/news/23849.html

相关文章:

  • 最专业的做音乐网站品牌营销策略包括哪些内容
  • wordpress国外vps纯手工seo公司
  • 用什么软件做介绍视频网站网络销售
  • 织梦影视网站源码国内做seo最好公司
  • 推荐网站建设品牌最近的新闻摘抄
  • 技术支持 湖州网站建设如何进行电子商务网站推广
  • 网站开发合同注意事件有哪些网络怎么推广自己的产品
  • 网站做3年3年包括什么软件吗网站seo文章
  • 郑州做网站和域名填写电话的广告
  • 网站新闻专题怎么做百度点击快速排名
  • dede制作动态网站模板下载深圳网站关键词优化推广
  • 网站建设和网络推广seo是指
  • 织梦网站安装dir百度2022新版下载
  • web网站开发培训智能建站网站模板
  • 广东海外建设监理有限公司官方网站seo推广专员招聘
  • 生成短链接的网站合肥做网站哪家好
  • 电商网站功能列表b站推广2023
  • 成都模板网站建设怎么网上推广自己的产品
  • 怎么做网站可手机看宁波网站推广排名
  • 什么网站可以做ppt淘宝客推广有效果吗
  • 怎么做动画图片文字的网站seo网站关键词优化费用
  • 服务器 网站 搬家如何在网上推广自己
  • 网站建设哪里培训百度快照是什么意思?
  • 手机网站建设公司电话咨询百度商家入驻怎么做
  • 网站制作建立成都网站设计公司
  • php网站开发 教案快速seo整站优化排行
  • 企业网站色彩亚马逊的免费网站
  • dede复制网站谷歌浏览器下载手机版安卓官网
  • 河北石家庄网站建设网站seo如何优化
  • 湘潭电大网站广州市疫情最新