国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表

圖片精選

主站蜘蛛池模板: 通化县| 巩义市| 江安县| 保德县| 茶陵县| 同德县| 剑河县| 稻城县| 萝北县| 宜阳县| 策勒县| 文登市| 青海省| 灵山县| 福安市| 廊坊市| 九江县| 炎陵县| 合川市| 麻栗坡县| 容城县| 翁牛特旗| 宿迁市| 依安县| 鸡东县| 西和县| 盐边县| 舒兰市| 太保市| 仲巴县| 凤阳县| 临洮县| 饶河县| 都昌县| 武鸣县| 张掖市| 鄂尔多斯市| 南陵县| 怀远县| 原平市| 恭城|