2022-01-04 服务端登录校验(assert)
2022/1/4 23:34:59
本文主要是介绍2022-01-04 服务端登录校验(assert),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
后端 routes.js
const assert = require('http-assert') // 资源列表 router.get('/', async (req, res, next) => { const token = String(req.headers.authorization || '').split(' ').pop() assert(token, 401, '请先登录') const { id } = jwt.verify(token, app.get('secret')) assert(id, 401, '请先登录') req.user = await AdminUser.findById(id) assert(req.user, 401, '请先登录') await next() }, async (req, res) => {}) app.post('/admin/api/login', async (req, res) => { const { username, password } = req.body // 1. 根据用户名找用户 const user = await AdminUser.findOne({ username }).select('+password') assert(user, 422, '用户不存在') // 2. 校验密码 const isValid = require('bcryptjs').compareSync(password, user.password) assert(isValid, 422, '密码错误') // 3. 返回token const token = jwt.sign({ id: user._id }, app.get('secret')) res.send({ token }) }) // 错误处理函数 app.use(async (err, req, res, next) => { res.status(err.statusCode || 500).send({ message: err.message }) })
前端 http.js
http.interceptors.response.use( res => { return res }, err => { if (err.response.data.message) { Vue.prototype.$message({ type: 'error', message: err.response.data.message }) if (err.response.status === 401) { router.push('/login') } } return Promise.reject(err) } )
这篇关于2022-01-04 服务端登录校验(assert)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15JavaMailSender是什么,怎么使用?-icode9专业技术文章分享
- 2024-11-15JWT 用户校验学习:从入门到实践
- 2024-11-15Nest学习:新手入门全面指南
- 2024-11-15RestfulAPI学习:新手入门指南
- 2024-11-15Server Component学习:入门教程与实践指南
- 2024-11-15动态路由入门:新手必读指南
- 2024-11-15JWT 用户校验入门:轻松掌握JWT认证基础
- 2024-11-15Nest后端开发入门指南
- 2024-11-15Nest后端开发入门教程
- 2024-11-15RestfulAPI入门:新手快速上手指南