🍳作者:
贤蛋大眼萌,一名很普通但不想普通的程序媛 \color{#FF0000}{贤蛋 大眼萌 ,一名很普通但不想普通的程序媛} 贤蛋大眼萌,一名很普通但不想普通的程序媛🤳🙊语录:
多一些不为什么的坚持 \color{#0000FF}{多一些不为什么的坚持} 多一些不为什么的坚持📝本文章收录于专栏:Node.js+koa–后端管理系统
💭
眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂 o f f e r ,程序员的必备刷题平台 − − 牛客网 \color{#ff7f50}{眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台--牛客网} 眼过千遍不如手锤一遍:推荐一款模拟面试,斩获大厂offer,程序员的必备刷题平台−−牛客网👉🏻点击跳转刷题网免费注册学习
用户登录接口设计 | 登录验证 | 登录返回凭证(令牌)
🥩 登录接口设计
① 编写流程
- 登录用户路由router编写;
- 处理登录函数Login的controller编写;
- 操作数据库的service编写;
② 登录用户基本逻辑设计



🍬 编写验证登录中间件
//目录:@/middleware/auth_middleware.js// 用户登录验证中间件 constverifyLogin=async(ctx,next)=>{
console.log('验证登录成功的midleware');// 1. 获取用户名和密码const{name, password}= ctx.request.body
// 2.判断用户名和密码是否为空if(!name ||!password || name ===''||password ===''){const error =newError(errorTypes.NAME_OR_PASSWORD_IS_REQUIRED)return ctx.app.emit('error',error,ctx)}// 3. 判断用户是否存在const result =await userServiece.getUserByName(name);const user = result[0];// console.log(user);if(!user){const error =newError(errorTypes.USER_DOES_NOT_EXISTS)return ctx.app.emit('error',error,ctx)}// 4. 判断密码是否与数据库的存储一致if(md5password(password)!= user.password){const error =newError(errorTypes.PASSWORD_IS_INCORRENT)return ctx.app.emit('error',error,ctx)}
ctx.user = user;awaitnext();}
🍚 登录返回凭证
① 生成公钥和私钥
注意:这里补充一下cookie和token的相关知识 http://t.csdn.cn/u4tO1
引入keys(参考http://t.csdn.cn/u4tO1 )–>将公钥和私钥写入配置文件下(src/app/config.js)

② 派发令牌

③ 编写验证测试接口

④ 验证令牌(授权中间件)
//目录:@/middleware/auth_middleware.jsconstverifyAuth=async(ctx,next)=>{
console.log('授权验证middleware(判断是否登录)');// 1. 获取tokenconst authorization = ctx.headers.authorization;if(!authorization){const error =newError(errorTypes.UNAUTHORIZATION);return ctx.app.emit('error', error, ctx);}const token = authorization.replace('Bearer ','')// 2. 验证tokentry{const result = jwt.verify(token,PUBLIC_KEY,{algorithms:["RS256"]});
ctx.user = result
// console.log(ctx.user)awaitnext();}catch(err){const error =newError(errorTypes.UNAUTHORIZATION)
ctx.app.emit('error',error,ctx)}}
PS:
求知无坦途,学问无捷径。👣
一步一个脚印,你走过的路,每一步都算数。
\color{#ff7f50}{一步一个脚印,你走过的路,每一步都算数。}
一步一个脚印,你走过的路,每一步都算数。 每一次进步都是对自己努力的肯定。如果读了文章有收获,不如一起来学习,一起进步吧。传送门🚪刷题神器


版权归原作者 贤蛋大眼萌 所有, 如有侵权,请联系我们删除。