当前位置:
首页 > 网站开发 > JavaScript >
-
JavaScript教程之koa使用koa-passport实现路由进入前登
现在的项目需求很简单,当进入一个页面的时候,如果没登录,则跳转到登录页面,如果登录了则直接到对应页面。
koa2写的项目,使用koa-passport,koa-session,根据koa-passport的
isAuthenticated()来判断是否登录。 这篇文章写的很好:===》https://segmentfault.com/a/1190000011557953 我的其中一个路由代码; controllers:
exports.renderUserList = async (ctx, next) => { if (ctx.isAuthenticated()) { console.log(ctx.state.user) console.log(ctx) let data = await userDao.userList() await ctx.render('userList', { title: '员工列表', csrf: ctx.csrf, data: data }) }else { ctx.redirect('/login') } }
router.js:
router.get('/userList', User.renderUserList)
passport.js:
const passport = require('koa-passport') const User = require('../models/user') const log4js = require('koa-log4') const logger = log4js.getLogger('passport') const LocalStrategy = require('passport-local').Strategy const md5 = require('md5') passport.use(new LocalStrategy( /** * @param username 用户输入的用户名 * @param password 用户输入的密码 * @param done 验证验证完成后的回调函数,由passport调用 */ function (username, password, done) { User.findOne({username: username},function (err,result) { if (result !== null) { if (result.password === md5(password)) { return done(null, doPassword(result),'登录成功') } else { return done(null, false, '密码错误') } } else { return done(null, false, '用户不存在') } }).catch(function (err) { logger.error(err.message) return done(null, false, {message: err.message}) }) } )) // serializeUser 在用户登录验证成功以后将会把用户的数据存储到 session 中 passport.serializeUser(function (user, done) { done(null, user) }) // deserializeUser 在每次请求的时候将从 mongodb 中读取用户对象 passport.deserializeUser(function (id, done) { console.log(id) User.findById(id, function (err, user) { done(err, doPassword(user)) }) // done(null, user) }) //隐藏密码,相当于是去掉密码的用户信息保存在session里 function doPassword(user) { if(user) { user.password = '' return user } else { return null } } module.exports = passport
问题:目前用
isAuthenticated()来判断是否登录只会在单个路由中分别判断,想问下大家有没有办法可以把这个判断是否登录的方法集成成一个方法,然后每个路由去使用。欢迎大家留言!
栏目列表
最新更新
nodejs爬虫
Python正则表达式完全指南
爬取豆瓣Top250图书数据
shp 地图文件批量添加字段
爬虫小试牛刀(爬取学校通知公告)
【python基础】函数-初识函数
【python基础】函数-返回值
HTTP请求:requests模块基础使用必知必会
Python初学者友好丨详解参数传递类型
如何有效管理爬虫流量?
SQL SERVER中递归
2个场景实例讲解GaussDB(DWS)基表统计信息估
常用的 SQL Server 关键字及其含义
动手分析SQL Server中的事务中使用的锁
openGauss内核分析:SQL by pass & 经典执行
一招教你如何高效批量导入与更新数据
天天写SQL,这些神奇的特性你知道吗?
openGauss内核分析:执行计划生成
[IM002]Navicat ODBC驱动器管理器 未发现数据
初入Sql Server 之 存储过程的简单使用
这是目前我见过最好的跨域解决方案!
减少回流与重绘
减少回流与重绘
如何使用KrpanoToolJS在浏览器切图
performance.now() 与 Date.now() 对比
一款纯 JS 实现的轻量化图片编辑器
关于开发 VS Code 插件遇到的 workbench.scm.
前端设计模式——观察者模式
前端设计模式——中介者模式
创建型-原型模式