安装
纱添加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实现本地验证的方法示例