欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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ù)定義序列化操作,調用ctx.login()會觸發(fā)序列化操作

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

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

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

  ctx.state.user 認證用戶

  ctx.login(user) 登錄用戶

  ctx.logout() 用戶退出登錄

  ctx.isAuthenticated() 判斷是否認證

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

相關文章

  • Node.js對MongoDB進行增刪改查操作的實例代碼

    Node.js對MongoDB進行增刪改查操作的實例代碼

    這篇文章主要介紹了Node.js對MongoDB進行增刪改查操作 ,需要的朋友可以參考下
    2019-04-04
  • 發(fā)布一款npm包幫助理解npm的使用

    發(fā)布一款npm包幫助理解npm的使用

    這篇文章主要介紹了發(fā)布一款npm包幫助理解npm的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • node schedule實現(xiàn)定時任務的示例代碼

    node schedule實現(xiàn)定時任務的示例代碼

    實際工作中,可能會遇到定時清除某個文件夾內容,本文主要介紹了node schedule實現(xiàn)定時任務的示例代碼,具有一定的參考價值,感興趣的可以了解一下
    2024-08-08
  • 使用express搭建一個簡單的查詢服務器的方法

    使用express搭建一個簡單的查詢服務器的方法

    本篇文章主要介紹了使用express搭建一個簡單的查詢服務器的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-02-02
  • 一文搞懂npm?install?意義

    一文搞懂npm?install?意義

    我們在安裝依賴包的時候,不需要過多的去糾結是使用?-S?還是?-D?呢??隨便安裝到?dependencies?或者?devDependencies?里都行,反正?npm?install的時候,都會安裝dependencies?和?devDependencies依賴,今天通過本文學習npm?install意義,感興趣的朋友跟隨小編一起看看吧
    2022-12-12
  • 簡單了解node npm cnpm的具體使用方法

    簡單了解node npm cnpm的具體使用方法

    這篇文章主要介紹了簡單了解node npm cnpm的具體使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-02-02
  • nodejs 圖片預覽和上傳的示例代碼

    nodejs 圖片預覽和上傳的示例代碼

    本篇文章主要介紹了nodejs 圖片預覽和上傳的示例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 利用Node.js如何實現(xiàn)文件循環(huán)覆寫

    利用Node.js如何實現(xiàn)文件循環(huán)覆寫

    這篇文章主要給大家介紹了關于利用Node.js如何實現(xiàn)文件循環(huán)覆寫的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Node.js具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-04-04
  • node?+?multer?實現(xiàn)文件上傳過程

    node?+?multer?實現(xiàn)文件上傳過程

    這篇文章主要介紹了node?+?multer?實現(xiàn)文件上傳過程,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Nodejs 微信小程序消息推送的實現(xiàn)

    Nodejs 微信小程序消息推送的實現(xiàn)

    這篇文章主要介紹了Nodejs 微信小程序消息推送的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01

最新評論