在这篇博文的基础上
https://blog.youkuaiyun.com/wangrong111222/article/details/80664823
要把各类信息的接口解耦; 分类;
现在来作用户的信息类的接口
user.js
const express =require("express"); const Router=express.Router();//使用express路由对象进行挂载; Router.get("/info",function (req,res) { return res.json({code:1}) }) module.exports= Router; //输出router
这里使用 express的 Router方法拿到 这个路由对象;
使用这个路由对象来 设置路径 并且输出
在server.js
const userRouter =require("./user");//引入 user引入user.js;
const app=express(); app.use("/user",userRouter)//开启一个中间件,定义子路由
使用app.use来开启中间件,第一个参数 是路径,第二个要定义的子路由;
访问的话就是localhost:9093/user/info 就可以拿到 {code:1}
////////////
这边和mongodb的操作 ,要单独分离出来一个模块 ,当前就是model.js
const DB_URL="mongodb://127.0.0.1:27017/imocc-chat"; const mongoose=require('mongoose'); mongoose.connect(DB_URL); //定义字段模型 const models={ user:{ "user":{"type":String,"require":true}, "psw":{"type":String,"require":true}, "type":{"type":String,"require":true} }, chat:{ } }; //把modles里的字段以modle.key的形式全部注册到mongodb for (let m in models){ mongoose.model(m,new mongoose.Schema(models[m])) } //输出一个对象,包含着 可以通过 key名来读取mongodb相连的 方法属性; module.exports={ getModel:function (name) { return mongoose.model(name); } }
然后在server/user.js下来引入这个mongodb;
const models=require("./model"); const User=models.getModel("user");
直接拿到关于user字段的相关内容;
Router.get("/list",function (req,res) { User.find({},function (err,doc) { return res.json(doc); }) });
放入筛选条件后 以json格式输出内容;
为了以后能使用post来传输数据 到mongodb ,这里要安装一个包
cnpm i --save body-parser
装好以后
const badyParser=require("body-parser"); const cookieParser=require("cookie-parser");
在server.js里引入 这俩 插件 cookie是之前就装了的
使用他们
app.use(cookieParser()); app.use(badyParser.json());
这样 app的接口就可以解析 cookie和post 过来的json了;
现在先注册post方法
//注册post方法 Router.post("/register",function (req,res) { //有了body-parser就可以拿到post的参数,解构出来; const {user,psw,type}=req.body; //先查询 用户名是否存在 User.findOne({user},function (err,doc) { if(doc){ return res.json({code:1,msg:"用户名字重复"}) } //把用户的字段存进mongodb User.create({user,psw,type},function (e,d) { if(e){ return res.json({code:1,msg:"后段报错,老铁激动吗?"}) } return res.json({code:0}) }) }) })
//登陆模块实现
//注册登陆post 方法; Router.post("/login",function (req,res) { const {user,psw}=req.body; // 把你不想输出到页面的值,在第二个入参设置为0 User.findOne({user:user,psw:psw},{psw:0,__v:0,_id:0},function (e,d) { if(!d){ return res.json({code:1,msg:"user/psw error"}) } return res.json({code:0,data:d}) }) })
// 把你不想输出到页面的值,在第二个入参设置为0注意一下 注释内容
简单说下 密码加密
md5是非对称加密,就是单向加密,而且具有雪崩效应; 符合基本的密码学规范;
密码在入库的时候需要加密 md5;但是这个不够,有彩虹表可以撞库;所以需要加严;
所谓加严就是自己在md5的基础上继续改造;比如基本的密码值加上随机值加密后再来一次加密 ;