koa-passport实现本地验证的方法示例

  

安装         纱添加koa-passport passport-local      

先看下passport.js登录策略,判断用户和密码

        const护照=要求(“koa-passport”)   const LocalStrategy=需要.Strategy (“passport-local”)   const用户=需要(“. ./. ./dbs/模型/用户)      护照。使用(新LocalStrategy((用户名、密码完成)=祝辞{   用户。findOne ({username},(呃,用户)=比;{   如果(err)返回(err)   如果(用户)返回(null,假的,{信息:“用户不存在的})   如果用户。密码!==密码)返回完成(null,假的,{信息:“密码错误的})   返回(null,用户完成)   })   }))      护照。serializeUser((用户,完成)=比;{   完成(null,用户)   })      passport.deserializeUser((用户,完成)=比;{   完成(null,用户)   })      模块。出口=护照      之前      

在入口中挂载护照

        app.use (passport.initialize ())   app.use (passport.session ())   之前      

这时候护照策略配置完成

  

登录接口实现

        路由器。邮报》('/signin ',异步ctx=比;{   返回护照。验证(“当地”,(犯错、用户信息、状态)=比;{   如果(err) {   ctx。身体={   代码:1,   味精:犯错   }   其他}{   如果(用户){   ctx。身体={   代码:0,   味精:“登录成功”,   用户   }   返回ctx.login(用户)   其他}{   ctx。身体={   代码:1,   味精:信息   }   }   }   })(ctx)   })      之前      

用户是否登录

        路由器。get (/getUser,异步ctx=比;{   如果(ctx.isAuthenticated ()) {   const{用户名、电子邮件}=ctx.session.passport.user   ctx。身体={   用户名、   电子邮件   }   其他}{   ctx。身体={   用户名:”,   电子邮件:“   }   }   })      之前      

用户退出

        路由器。get(/退出,异步ctx=比;{   等待ctx.logout ()   如果(! ctx.isAuthenticated ()) {   ctx。身体={   代码:0   }   其他}{   ctx。身体={   代码:1   }   }   })      之前      

  

通过passport.serializeUser函数定义序列化操作,调用ctx.login()会触发序列化操作

  

通过passport.deserializeUser函数定义反序列化操作,在会话中如果存在护照:{用户:“苏珊”}会触发反序列化操作

  

通过护照。使用(新LocalStrategy(“当地”,…))注册策略,调用passport.authenticate(“当地”,…)调用策略

  

app.use (passport.initialize())会在ctx挂载以下方法

  

ctx.state。用户认证用户

  

ctx.login(用户)登录用户

  

ctx.logout()用户退出登录

  

ctx.isAuthenticated()判断是否认证
  

  

到此这篇关于koa-passport实现本地验证的方法示例的文章就介绍到这了,更多相关koa-passport本地验证内容请搜素以前的文章或下面相关文章,希望大家以后多多支持!

koa-passport实现本地验证的方法示例