最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2020年02月20日 10:04:26   作者:蘇荷酒吧  
這篇文章主要介紹了koa-passport實現(xiàn)本地驗證的方法示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

安裝

yarn add koa-passport passport-local

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

const passport = require('koa-passport')
const LocalStrategy = require('passport-local').Strategy
const 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策略配置完成

登錄接口實現(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 認證用戶

  ctx.login(user) 登錄用戶

  ctx.logout() 用戶退出登錄

  ctx.isAuthenticated() 判斷是否認證

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

相關(guān)文章

  • node中npm ERR! network ‘proxy‘ 配置問題解決

    node中npm ERR! network ‘proxy‘ 配置問題解決

    在進行npm依賴管理時,可能會遇到因網(wǎng)絡(luò)配置不當導(dǎo)致的錯誤,如npm ERR! network proxy config is set properly,下面就來介紹一下,感興趣的可以了解一下
    2024-09-09
  • nodejs中使用archive壓縮文件的實現(xiàn)代碼

    nodejs中使用archive壓縮文件的實現(xiàn)代碼

    這篇文章主要介紹了nodejs中使用archive壓縮文件的實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-11-11
  • NodeJS整合銀聯(lián)網(wǎng)關(guān)支付(DEMO)

    NodeJS整合銀聯(lián)網(wǎng)關(guān)支付(DEMO)

    這篇文章主要介紹了NodeJS整合銀聯(lián)網(wǎng)關(guān)支付DEMO的相關(guān)資料非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2016-11-11
  • 簡單模擬node.js中require的加載機制

    簡單模擬node.js中require的加載機制

    大家都知道Node 采用的模塊化結(jié)構(gòu)是按照 CommonJS 規(guī)范,模塊與文件是一一對應(yīng)關(guān)系,即加載一個模塊,實際上就是加載對應(yīng)的一個模塊文件。這篇文章顯示簡單的介紹了nodejs中require的加載機制,而后簡單的模擬require函數(shù),有需要的朋友們下面來一起看看吧。
    2016-10-10
  • node.js入門教程

    node.js入門教程

    這篇文章主要介紹了node.js入門教程,講解了node.js在linux和windows下的安裝,模塊的概念,NPM的使用等等,是一篇不錯的nodejs入門文章,需要的朋友可以參考下
    2014-06-06
  • 配置Node.js環(huán)境變量詳細圖文教程

    配置Node.js環(huán)境變量詳細圖文教程

    這篇文章主要給大家介紹了關(guān)于配置Node.js環(huán)境變量詳細圖文教程的相關(guān)資料,在Node.js中設(shè)置環(huán)境變量非常簡單,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2023-11-11
  • nodejs基礎(chǔ)之buffer緩沖區(qū)用法分析

    nodejs基礎(chǔ)之buffer緩沖區(qū)用法分析

    這篇文章主要介紹了nodejs基礎(chǔ)之buffer緩沖區(qū)用法,結(jié)合實例形式分析了buffer緩沖區(qū)的概念、功能、創(chuàng)建、讀寫等相關(guān)操作技巧,需要的朋友可以參考下
    2018-12-12
  • 快速使用node.js進行web開發(fā)詳解

    快速使用node.js進行web開發(fā)詳解

    本篇文章主要介紹了快速使用node.js進行web開發(fā)詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-04-04
  • node.js中的fs.lchown方法使用說明

    node.js中的fs.lchown方法使用說明

    這篇文章主要介紹了node.js中的fs.lchown方法使用說明,本文介紹了fs.lchown的方法說明、語法、接收參數(shù)、使用實例和實現(xiàn)源碼,需要的朋友可以參考下
    2014-12-12
  • React和Node.js快速上傳進度條功能實現(xiàn)

    React和Node.js快速上傳進度條功能實現(xiàn)

    這篇文章主要為大家介紹了React和Node.js快速上傳進度條功能實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03

最新評論

元阳县| 乐山市| 汝南县| 元谋县| 新沂市| 江门市| 观塘区| 郯城县| 仙桃市| 新晃| 专栏| 宣恩县| 贡山| 灯塔市| 上栗县| 永修县| 罗城| 聂荣县| 收藏| 称多县| 柳江县| 五莲县| 偏关县| 黄陵县| 科尔| 宝兴县| 中牟县| 新安县| 明溪县| 永顺县| 洮南市| 金堂县| 铜山县| 灵山县| 中牟县| 沿河| 镇原县| 新河县| 南康市| 临夏市| 崇仁县|