1、首先实现一个注册模块功能
代码
const SALT = bcrypt.genSaltSync(10)
router.post("/register", (req, res) => {
const {
username,
password
} = req.body
const hash = bcrypt.hashSync(String(password), SALT)
accountModel.create({
username,
password: hash
}, (error, docs) => {
if (error) {
res.send(error)
} else {
res.send({
status: 200,
data: [],
message: "注册成功"
})
console.log(docs);
}
})
})
2、然后就可以登录
代码展示
const privateKey = "i love study"
const router = express.Router()
router.post("/login", (req, res) => {
const {
username,
password
} = req.body
accountModel.findOne({
username
}, (error, docs) => {
if (error) {
res.send({
status: 422,
data: [],
message: error.message
})
} else if (!docs) {
res.send({
status: 422,
data: [],
message: "用户名不存在"
})
} else if (!bcrypt.compareSync(password, docs.password)) {
res.send({
status: 422,
data: [],
message: "密码不正确"
})
} else {
const token = jwt.sign({
name: docs.username
}, privateKey)
res.setHeader("Authorization", `token ${token}`)
res.send({
status: 200,
data: [],
message: "登陆成功"
})
console.log(req.body);
}
})
})
3、最后就可以查看数据了
下面的根据else if 中的名是登陆名的加密 密钥
router.get("/list", (req, res) => {
const token = req.headers["authorization"].split(" ").pop()
jwt.verify(token, privateKey, (error, data) => {
console.log(data);
// error 验证失败
//decode 验证成功后,解密出来的数据
if (error) {
res.send({
status: 403,
data: [],
message: error.message
})
} else {
if (!data) {
res.send({
status: 403,
data: [],
message: "身份验证失败"
})
} else if (data.name !== "木生") {
// 根据劫色判断角色
res.send({
status: 403,
data: [],
message: "权限不足"
})
} else {
userModel.find({}, (error, docs) => {
res.send({
status: 200,
data: docs,
message: "请求成功"
})
})
}
}
})
})