koa使用koa-passport实现路由进入前登录验证
2018-06-24 02:10:00来源:未知 阅读 ()
现在的项目需求很简单,当进入一个页面的时候,如果没登录,则跳转到登录页面,如果登录了则直接到对应页面。
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()来判断是否登录只会在单个路由中分别判断,想问下大家有没有办法可以把这个判断是否登录的方法集成成一个方法,然后每个路由去使用。欢迎大家留言!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:react(一):组件的生命周期
- 关于jQuery UI 使用心得及技巧 2020-03-29
- js中去掉字串左右空格 2020-03-20
- Js中如何使用sort() 2020-03-18
- 使用JS在浏览器中判断当前网络连接状态的几种方法 2020-03-12
- 在JavaScript中尽可能使用局部变量的原因 2020-03-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash