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-10-06小米11i印度快充版ROM合集:极致体验,超越期待
- 2024-10-06【ROM下载】小米11i 5G 印度版系统, 疾速跃迁,定义新速度
- 2024-10-06【ROM下载】小米 11 青春活力版,青春无极限,活力全开
- 2024-10-05小米13T Pro系统合集:性能与摄影的极致融合,值得你升级的系统ROM
- 2024-10-01基于Python+Vue开发的医院门诊预约挂号系统
- 2024-10-01基于Python+Vue开发的旅游景区管理系统
- 2024-10-01RestfulAPI入门指南:打造简单易懂的API接口
- 2024-10-01初学者指南:了解和使用Server Action
- 2024-10-01Server Component入门指南:搭建与配置详解
- 2024-10-01React 中使用 useRequest 实现数据请求