注:本文做了一个简单的注册登录接口
那么问题来了express要怎么样的写一个注册与登录接口
this is a question(这是一个问题)
我们先创建一个文件users.js
放在route文件夹中
在app.js中写入这两行代码,引入users.js
var usersRouter = require('./routes/users');
app.use('/users', usersRouter);
然后我们启动 yarn dev或者你自己使用的启动命令
接下去开始编写我们的代码
先进行初始化的引入express
var express = require('express');
module.exports = router;
接着开始编写注册接口
/* 注册 */
router.post('/register', function(req, res) {
console.log(req.body);
//第一步先查询的主要问题是为了查询表是否有类似的账号,如果有类似账号那么直接登录即可
//如果则需要没有创建
db.querySql(`select * from 表名 WHERE name=${请求到的账号名称}`, [], function(err, data) {
//查询到为数组形式返回,如果返回为[]同data.length==0,则走注册后边的注册
if (data.length !== 0) {
let resData = {
account: data[0].name,
password: data[0].password,
};
res.json({code: -1, data: resData, msg: '已注册'});
} else {
//密码我采用了加密的方式处理,详细的处理方式会在后边贴出
let sql =`INSERT INTO 表名( 表账户字段, 表密码字段) VALUES ( '${req.body.账户字段}', '${bcrypt.hashSync(req.body.密码字段, 10)}')`;
db.querySql(sql, [], function(err, dataA) {
console.log(dataA);
res.json({code: 200, data: req.body,
msg: '成功'});
});
}
});
});
下边我们继续编写登录接口
/* 登录 */
router.post('/login', function(req, res) {
db.querySql(`select * from user WHERE name=${req.body.userName} LIMIT 1`, [], function(err, data) {
let obj = data[0];
//如果是false则校验不通过
if (bcrypt.compareSync(req.body.密码, obj.密码)==false) {
res.status(200).send({code: -1, data: null, msg: '账号/密码错误,请检查后重新输入'}).end();
} else {
//生成token返回,合成字段的内容可以自行选择
//具体该方法我会放在下边之前我看的博客
vertoken.setToken(obj.用户名, obj.id).then(token=>{
let newData =obj;
newData.token = token;
delete newData.password;
return res.json({
code: 200,
msg: '登录成功',
data: newData,
});
});
}
});
});
启动运行
测试地址
前缀地址+/users+/login+接口名
加密与解密方式
转自node.js使用bcryptjs加密和解密
生成token与验证
转自 node.js +express 实现token 验证
希望这些能对我们使用express的同学有用。
也欢迎各位共同讨论
我专注于推荐一些亲测有效的方法给大众,不断踩坑不断的修改!