国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

koa-passport實(shí)現(xiàn)本地驗(yàn)證的方法示例

2024-05-06 15:44:41
字體:
供稿:網(wǎng)友

安裝

yarn add koa-passport passport-local

先看下passport.js登錄策略,判斷用戶和密碼

const passport = require('koa-passport')const LocalStrategy = require('passport-local').Strategyconst User = require('../../dbs/models/users')passport.use(new LocalStrategy((username, password, done) => { User.findOne({username}, (err, user) => {  if (err) return done(err)  if (!user) return done(null, false, {message: '用戶不存在'})  if (user.password !== password) return done(null, false, {message: '密碼錯誤'})  return done(null, user) })}))passport.serializeUser((user, done) => { done(null, user)})passport.deserializeUser((user, done) => { done(null, user)})module.exports = passport

在入口中掛載passport

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

這時候passport策略配置完成

登錄接口實(shí)現(xiàn)

router.post('/signin', async ctx => { return Passport.authenticate('local', (err, user, info, status) => {  if (err) {   ctx.body = {    code:-1,    msg:err   }  }else {   if (user) {    ctx.body = {     code:0,     msg:'登錄成功',     user    }    return ctx.login(user)   } else {    ctx.body = {     code:1,     msg:info    }   }  } })(ctx)})

用戶是否登錄

router.get('/getUser', async ctx => { if (ctx.isAuthenticated()){  const {username, email} = ctx.session.passport.user  ctx.body = {   username,   email  } } else {  ctx.body = {   username: '',   email: ''  } }})

用戶退出

router.get('/exit', async ctx => { await ctx.logout() if (!ctx.isAuthenticated()) {  ctx.body = {   code:0  } } else {  ctx.body = {   code:-1  } }})

分析

通過passport.serializeUser函數(shù)定義序列化操作,調(diào)用ctx.login()會觸發(fā)序列化操作

通過passport.deserializeUser函數(shù)定義反序列化操作,在session中如果存在passport:{user:'Susan'}會觸發(fā)反序列化操作

通過passport.use(new LocalStrategy('local', ...)) 注冊策略,調(diào)用passport.authenticate('local',...)調(diào)用策略

app.use(passport.initialize()) 會在ctx掛載以下方法

  ctx.state.user 認(rèn)證用戶

  ctx.login(user) 登錄用戶

  ctx.logout() 用戶退出登錄

  ctx.isAuthenticated() 判斷是否認(rèn)證

到此這篇關(guān)于koa-passport實(shí)現(xiàn)本地驗(yàn)證的方法示例的文章就介紹到這了,更多相關(guān)koa-passport 本地驗(yàn)證內(nèi)容請搜素錯新站長站以前的文章或下面相關(guān)文章,希望大家以后多多支持錯新站長站!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 个旧市| 南宫市| 原阳县| 韶山市| 恩施市| 宁武县| 高碑店市| 宝坻区| 和硕县| 姜堰市| 万年县| 临颍县| 沅陵县| 九寨沟县| 新和县| 喀什市| 当阳市| 灵丘县| 堆龙德庆县| 乌苏市| 新河县| 大渡口区| 大石桥市| 泾川县| 临猗县| 禹州市| 修武县| 余江县| 松潘县| 车致| 阿拉尔市| 石柱| 正蓝旗| 观塘区| 广宁县| 昭苏县| 花莲县| 新沂市| 乐业县| 乐业县| 古田县|