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

网站wap转换企业邮箱免费版开通

网站wap转换,企业邮箱免费版开通,浙江省建设工程招投标网站,网络优化和推广1.划分文件夹 在src目录下创建controllers middleware models routes controllers 放具体的方法 signup login middleware 里面是中间件 请求的验证 models 放对象实体 routes 处理访问路径像/signup /login 等等 2. 接口开发 系统的主要 有用户认证 和 消息 2种类型…

1.划分文件夹

在src目录下创建controllers middleware models routes

controllers 放具体的方法 signup login

middleware 里面是中间件 请求的验证

models 放对象实体 

routes 处理访问路径像/signup  /login 等等

2. 接口开发 

系统的主要 有用户认证  和 消息 2种类型服务 

在index下面添加如下代码

import authRoutes from './routes/auth.route.js'
import bodyParser from 'body-parser'
import cookieParser from 'cookie-parser'// 解决req.body undefined问题
app.use(cookieParser())
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
// 实现signup 注册接口 认证
app.use('/api/auth', authRoutes)

/api/auth 是路由前缀  authRoutes是 处理请求的路由

在刚刚建好的routes文件夹下 创建auth.route.js 内容如下

import express from 'express';import {signUp, login} from "../controllers/auth.controller.js"const router = express.Router();router.post('/signup', signUp)
router.post('/login', login)export default router;

在models下创建user.model.js 创建user对象schema 作用是和数据库关联 (用法详见mongodb教程)


import mongoose from "mongoose";
const userSchema = new mongoose.Schema({email: {type: String,required: true,unique: true},password: {type: String,required: true,minlenght: 6},userName: {type: String,required: true},profilePic: {type: String,default: ''}
}, {timestamps: true});const User = mongoose.model('User', userSchema);export default User;

在lib文件夹下创建 util.js

import jwt from 'jsonwebtoken'export const generateToken = (userId,res) => {// 7天有效期const token = jwt.sign({userId},process.env.JWT_SECRET,{expiresIn:'7d'})res.cookie('jwt',token,{maxAge: 1000 * 60 * 60 * 24 * 7,httpOnly: true,sameSite: "strict",secure: process.env.NODE_ENV !== 'development'})return token
}

 在 /server/.env下 加 JWT_SECRET=mysecret 配置

在controllers文件夹下创建auth.controller.js 写我们的接口逻辑 

import { generateToken } from "../lib/util.js";
import User from "../models/user.model.js";
import bcrypt from "bcryptjs";// 实现signup接口
export const signUp = async (req, res) => {const { userName,password, email } = req.body// TODO: implement signup// 判断字段是否全部输入try {if (!userName || !password || !email) {return res.status(400).json({ message: '缺失字段' })}// 判断密码长度if (password.length < 6) {return res.status(400).json({ message: '密码长度不能小于6位' })}// 判断用户名是否已存在const user = await User.findOne({ email })if(user) {return res.status(400).json({ message: '邮箱已存在' })}// 密码加密const salt = await bcrypt.genSalt(10)const hashPassword = await bcrypt.hash(password,salt)// 创建用户const newUser = new User({userName,email,password: hashPassword})// 保存用户if(newUser) {generateToken(newUser._id,res)await newUser.save()res.status(201).json({_id: newUser._id,userName: newUser.userName,email: newUser.email,profilePic: newUser.profilePic,})}} catch (err) {return res.status(500).json({ message: '内部服务器错误' })}
}// 登录
export const login = async (req, res) => {const {password, email} = req.bodytry {const user = await User.findOne({ email })if (!user) {return res.status(400).json({ message: '认证失败' })}// 比较密码const isMatch = await bcrypt.compare(password, user.password)if (!isMatch) {return res.status(400).json({ message: '认证失败' })}generateToken(user._id,res)res.status(200).json({_id: user._id,userName: user.userName,email: user.email,profilePic: user.profilePic})} catch (err) {return res.status(500).json({ message: '内部服务器错误' })}
}// 退出
export const logout = async (req, res) => {try {res.cookie("jwt","", {maxAge:0})res.status(200).json({ message: '退出成功' })} catch (err) {return res.status(500).json({ message: '内部服务器错误' })}
}

3. postman测试接口

1.signup 注册接口

   密码输入1 小于6位 

注册成功返回用户信息 

查看数据库 有我们刚才注册的信息  并且密码也已加密

2.login  登录接口 

  返回用户信息  登录成功

3. logout 登出

        提示退出成功

以上就是本篇内容 下篇我们实现前端 注册注册页面 并和后端接口联调。如有问题评论私信都可以联系我 一起交流

http://www.yayakq.cn/news/349313/

相关文章:

  • 网站改用绝对地址的好处专业做seo推广
  • 网站建设进度说明农产品的网站建设方案以及范文
  • 哪里可以做网站优化崇卅市网站建设
  • 网站二级目录怎么做301保定网站建设的过程
  • python网站开发教程永久免费个人网页申请
  • 国外浏览器网站网站建设注册什么公司好
  • 网站屏蔽省份wordpress忘记密码修改数据库
  • 网站开发vs2015是什么怎么样才能搜索到自己做的网站
  • 做网站的成本香河县住房和城乡建设局网站
  • 网站页面热度网站开发的主要技术难点和重点
  • 建设银行社保卡网站在哪百度联盟是什么
  • 手机怎样制作个人网站百度seo排名软
  • 公司网站做的很烂白杨seo
  • 深圳网页网站设计没有公司可以做网站吗
  • 网站建设制作fash深圳品牌女装排行榜前50名
  • 网站站点管理在哪里wordpress编辑器共存
  • 做玉的网站成都的网站建设公司哪家好
  • 岳阳网站建设哪里有专业集团网站建设
  • 门户网站建设调查问卷制作视频app
  • 安徽省建设项目 备案网站云南软件开发公司排名
  • 网站主机与服务器吗wordpress 计数器
  • 微网站在线制作广东省广州市白云区白云湖街道
  • 爱站关键词挖掘查询工具安徽建设工程信息网人员
  • 在网站做登记表备案 如果修改wordpress添加keywords
  • wordpress做分类网站wordpress 外部页面
  • 上海建筑设计公司网站昆山做网站好的
  • 烟台建设工程信息网站网站自动跳转怎么办
  • php网站开发心得网络营销的特点包括哪些?
  • 网络公司投诉归什么部门管推广关键词如何优化
  • 无锡大型设计网站报价那个外贸网站做的好