Tag: passport.js

passport.authenticate – 用户名和密码为空

这可能是一些基本的错误,但我正在看教程,即使我认为我提交login表单后,我应该做的一切就像我应该redirect到“failureRedirect”页面。 当我看护照模块中的源代码的东西。 在这之后: Strategy.prototype.authenticate = function(req, options) { options = options || {}; var username = lookup(req.body, this._usernameField) || lookup(req.query, this._usernameField); var password = lookup(req.body, this._passwordField) || lookup(req.query, this._passwordField); //I added: console.log("U-> " + username); console.log("P-> " + password); 控制台说 U-> null P-> null 之后,rest不会执行。 if (!username || !password) { return this.fail({ message: options.badRequestMessage || […]

将护照openID-stategy与智威汤逊结合在一起

使用openID( passport-steam )尝试使用passport.js进行身份validation,然后使用令牌(JWT)而不是会话时,我遇到了问题。 我目前的代码如下所示: app.post('/auth/steam', passport.authenticate('steam')); app.get('/auth/steam/return', passport.authenticate('steam', { failureRedirect: '/', session: false }), function(req, res) { var token = jwt.encode({ useridentifier: req.user.identifier}, tokenSecret); res.redirect('/'); }); 但是,我遇到的问题是:我应该如何将令牌传回客户端? 由于这是一个从Steam网站回来后运行的GET请求,我不能用简单的答复 res.json(token) 就像我见过的人们和JWT一起使用本地策略一样。 我设法解决的唯一解决scheme就是使用包含令牌的会话(例如connect-flash),并在将其redirect到“/”后通过REST API与客户端进行通信,但是使用JWT是为了避免使用会话,不是吗?

如何正确使用passport.js实现serializeUser?

好的,所以我只是进入了MEAN堆栈,我试图用Passport.js构build一个应用程序。 我只是开始用户序列化来维护会话。 在他们的例子中,Passport使用这个序列化和反序列化: passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 所以,我的问题是:这个例子被认为是安全的? 如果我理解了这个权利,那么这不是说客户端可以伪造用户标识以login为具有该标识的用户? 我想我要问的是,他们的例子被认为是“安全的”,是一种正确的做事方式,或者是希望你改变这些function来产生独特的序列化。 如果这被认为是安全的,那么我想我错过了一些关于如何工作的东西,我很乐意填补。 另一方面,如果这是不安全的,我希望自己写一些函数来代替这些函数,那么下面这样做是否有效和安全: 在用户序列化后,生成一个随机散列并将其放入用户的数据库条目中。 随机哈希是代表该用户的序列号。 在反序列化之后,查找数据库中的随机哈希并返回相应的用户。 如果没有发现散列抛出某种错误。 用户注销时,从数据库中的条目中删除其串行散列。 如果直到这里我的逻辑是有效的,那么生成这个随机哈希的正确方法是什么?

Socket.io sessionStore,store.get方法不存在

我想用Socket.io和passport.js来使用会话存储 var session = require('express-session'); var cookieParser = require('cookie-parser'); var MongoStore = require('connect-mongo')(session); var sessionStore = session({ store: new MongoStore({url: 'mongodb://localhost/RULE'}), key: 'express.sid', secret: 'Heisenberg' }); // Socket.io auth io.set('authorization', passportSocketIo.authorize({ cookieParser: cookieParser, key: 'express.sid', secret: 'Heisenberg', store: sessionStore, success: onAuthorizeSuccess, fail: onAuthorizeFail, })); 我得到这个错误: TypeError: auth.store.get is not a function 所以我想这是connect-mongo商店实例的问题,但我不怎么debugging它或者是什么问题。

Passport isAuthenticated()总是返回TRUE

使用护照本地authentication,login工程,我点击getStatusbutton,它的工作原理,然后注销工程。 但注销后,我在浏览器中点击BACK,仍然可以显示getStatus的全部内容。 控制台loginisAuthenticated()仍然说“你已经login”。 这是简化的代码: var express = require('express'); var passport = require('passport'); var net = require('net'); var bodyParser = require('body-parser'); var http = require('http'); var multer = require('multer'); var cp = require('child_process'); var exec = require('child_process').exec; var sys = require('sys'); var path = require('path'); var util = require('util'); var session = require('express-session'); var crypto = […]

服务/停止服务Socket.IO

林想知道如何才能服务socket.io只为login用户? 现在我只是添加/删除 <script src="/socket.io/socket.io.js"></script> <script> var socket = io(); </script> 但当我成功的会话后删除它,页面不加载。 任何想法使用/服务socket.io只有用户与通行证会话身份validation?

从Azure Passport身份validation节点js注销

我有一个节点js应用程序,我们使用了azurelogin和通行证身份validation。 我已经成功login使用azure色和应用程序工作正常。 但是,当我注销并将url提供给页面时,它会检查身份validation并自动转到该页面而不要求login。 一旦我login我的url包含以下查询string1. session_state 2.代码3.状态4.令牌 login代码: app.get('/login', passport.authenticate('azuread-openidconnect', { failureRedirect: '/' }), function (req, res) { res.sendFile(path.join(__dirname+'/index.html')); }); 注销码: app.get('/logout', function (req, res) { req.session.destroy(); req.logout(); res.redirect('/'); }); 当我注销页面redirect到我的索引页面。 然后,当我给'/login'的url,它把我带到页面,而无需login页面 请帮忙摆脱这个…

Express路由器创build一个不需要的新会话

我正在使用express和passport-local作为基于本教程的authentication部分的反应项目: https : //scotch.io/tutorials/easy-node-authentication-setup-and-local validation工作得很好,我添加了快速路由器来为我的api定义我的路由,但是当我打电话给例如“/ api / myroute”时,express的路由器创build了另一个会话,我失去了用户,所以我的function是isLoggedIn块我的控制器的调用,因为在这个新的会话中没有用户。 所以我的问题是:为什么路由器重新创build一个会话? 什么是我的configuration错了? 这是我的代码: //server.js var path = require('path'); var webpack = require('webpack'); var webpackDevMiddleware = require('webpack-dev-middleware'); var webpackHotMiddleware = require('webpack-hot-middleware'); var config = require('./webpack.config'); var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var […]

格兰特vs Passport.js?

Grant & Passport.js有什么区别? 什么时候应该使用Grant而不是Passport.js,反之亦然? 如果我想制作一个社交媒体并跟踪用户活动,并将其发布到新闻Feed上,那我应该使用哪一个? Grant或passport.js?

护照本地策略不保存cookie或会话中的用户

我试图使用快递4护照,并通过本地策略进行validation。 我试图让一个简单的设置工作,但我有问题。 我尝试使用授权中间件function进行身份validation… deserializeUser永远不会被调用,req.user是未定义的,并且会话和cookie中缺less用户数据。 谁能帮我? 我的server.js文件: var express = require('express'); var app = express(); var path = require('path') var port = process.env.PORT || 3000; var argv = require('minimist')(process.argv.slice(2)); var dust = require('express-dustjs') var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var session = require('express-session'); var passport = require('passport'); var LocalStrategy = […]