一、密码加密
const crypto = require("crypto");
const jwt = require("jsonwebtoken");
const pwd = crypto.createHash('sha256').update(req.body.password).digest('hex');
const info = {
username: req.body.username,
password: pwd,
};
二、token生成
// info是用户名和密码
User.find(info, (err, docs) => {
if (docs.length != 0) {
// 生成token
const token = jwt.sign(info, "Libai", {
expiresIn: 60 * 60 * 24, // 24小时过期
});
res.json({
status: 1,
message: "登录成功",
token: token,
});
} else {
res.json({
status: 2,
message: "用户名或密码错误!",
});
}
});
三、求结果,统一处理返回值
function requestResult(data){
if(data){
return {
status: 1,
message: 'success',
body: data
}
}else{
return {
status: 2,
message: 'error',
body: data
}
}
}
module.exports = requestResult
四、实践
const Koa = require("koa");
const koa_jwt = require("koa-jwt");
// post
const bodyParser = require("koa-bodyparser");
const router = require("koa-router")();
const jwt = require("jsonwebtoken");
const app = new Koa();
app.use(bodyParser());
const secret = "小火车况且况且";
const token = jwt.sign({ name: "小火车" }, secret, { expiresIn: "1s" });
const need_Token = koa_jwt({ secret });
router.get("/", (ctx) => {
ctx.body = "hello world";
});
router.post("/login", (ctx) => {
ctx.body = "hello user";
});
app.use(router.routes()).use(need_Token);
app.listen(3000, () => console.log("===>>success====="));