Articles of passport.js

一旦authentication,总是去索引页面,而不是login

我有一个护照的小问题,一旦我成功login总是默认去“/ index”而不是“/”<—这是login页面。 默认情况下,用户将进入“/”,如果他们已经有一个会话,他们将被自动redirect到“/ index” 我有一些地方,如果用户没有通过身份validation,他们不能访问“/索引”,但不断获得redirect循环与我试图防止这一切,我只用了护照的最后一天左右,并有这个问题的问题。 我有一些地方,如果用户没有通过身份validation,他们不能访问“/索引” 任何人有什么build议,缺less什么? //Gets the login route and renders the page. app.get('/', function (req, res) { res.render('login'); }); //The index page, isLoggedIn function always called to check to see if user is authenticated or in a session, if they are they can access the index route, if they are not they […]

使用ejsembedded用户对象

我目前正在使用护照模块在Node.js中实现Web应用程序的身份validation。 在渲染索引页时,我将用户对象返回给用户 app.route('/').get(function(req, res) { res.render('index', { isAuthenticated: req.isAuthenticated(), user: req.user //User Object provided by passport }); }); 我试图用ejs将用户对象embedded到DOM中: <!–Embedding The User Object–> <script type="text/javascript"> var user = <%= user%>; </script> 但是有一些编码问题。 这是我在浏览器中查看源代码的输出: <!–Embedding The User Object–> <script type="text/javascript"> var user = { email: 'test@gmail.com', roles: [ 'user' ], created: Thu Feb 04 2016 19:13:16 […]

Angular Node – 在打开新的浏览器窗口时向服务器发送令牌

这个问题是不言自明的:我有一个令牌存储在我的浏览器。 当我login时,服务器端authentication中间件使用Passport来authentication我。 但是,当我closures并重新打开浏览器窗口时,令牌仍然存在,但护照不知道我是谁。 我怎样才能从客户端到服务器端检索令牌? 以下是我的代码。 app.get('/main', ensureAuthenticated, function(req, res, next) { // thingToSend gets sent the first time, I will modify it // later so it doesn't resend token if token exists var thingToSend = { token: createSendToken(req.user, config.secret), id: req.user._id, username: req.user.username, authorization: req.user.authorization }; res.render('main.ejs', thingToSend); }); function ensureAuthenticated(req, res, next) { if […]

我可以使用同一个服务器的passport.js会话login到其他服务器吗?

我正在使用express服务器 passport.js和我有在端口3000上运行的示例回购 。 我希望能够像使用示例一样使用端口3000来login护照,并且可以在另外两个运行在不同端口(8000和9000)上的其他节点服务器上创build会话。 所有3台服务器都在本地主机上。 在我想要的其他服务器之一 app.all('*', require('connect-ensure-login') .ensureLoggedIn("http://localhost:3000/login")); 只有当用户在localhost:3000上login时才能访问整个其他服务器。 用我上面的build议代码,如果我导航到http:// localhost:8000 / somepage ,它将redirect到http:// localhost:3000 /login是否我login在3000或不。 它不会识别我已login3000。

如何使用node.js创build会话?

我想为我的页面创build会话,当给一个像http:// localhost:3000 / pages / profile这样的url时,它会在没有login的情况下进入该页面。我现在应该怎么做来解决这个问题。 的node.js module.exports = function(app, express, passport){ var router = express.Router(); passport.use(new LocalStrategy({ usernameField: 'username', passwordField: 'password'}, function(username, password, done) { User.findOne({ name : username}, function(err, user) { if (!user){ return done(null, false,{message: 'Incorrect username' }); } if(user){ var validPassword = user.comparePassword(password); if(!validPassword){ return done(null, false,{message: 'Incorrect password' }); } […]

NodeJS,护照和Facebook,为什么我不能注销

使用此示例login并通过Facebook https://github.com/passport/express-4.x-facebook-example进行身份validation 我的困惑是为什么我无法注销。 这是一个基于一个应用亭的应用程序。 我需要强制从应用程序注销,以便每个后续用户获得默认的Facebooklogin对话框。 我尝试做一个HTP DELETE,但只从用户的帐户删除我的应用程序,它不会实际login用户。

FacebookTokenError:这个授权码已被使用

好的,所以这是很多原因的常见错误。 我正在尝试修改现有的Node-Passport-Facebook模块,让桌面上的本地图像在login后上传到用户的Facebook帐户。这是我的目标。 这是我正在扩展的代码模块 https://github.com/passport/express-4.x-local-example 而这又是基于https://github.com/jaredhanson/passport-facebook 我从来没有通过console.log('错误在这里..错误, “这个授权码已被使用。” 令人困惑的是,返回的authentication代码总是不一样! 所以当我尝试将它换成访问令牌时,它怎么能被使用呢? 任何人都可以提供一些build议,或者我可能会尝试下一步? 我的直觉是有一些关于Passport.js没有正确实施。 所以我的问题是,我将如何修改下面的代码(基于这个护照的例子) https://github.com/passport/express-4.x-facebook-example/blob/master/server.js login后上传图片? var express = require('express'); var passport = require('passport'); var Strategy = require('passport-facebook').Strategy; var CLIENTSECRET ='<client secret>'; var APPID ='<app id>'; // Configure the Facebook strategy for use by Passport. // // OAuth 2.0-based strategies require a `verify` function which receives the […]

Node API – 如何将Facebooklogin链接到Angular前端?

重写这个问题更清楚。 我已经使用passport-facebook在我的网站上处理与Facebook的login。 我的前端是在Angular,所以我现在知道需要了解什么是调用API路线的正确方法。 我已经有几个使用Angular的$http服务调用 – 但是作为这个login与Facebook实际上重新路由的Facebook页面,我仍然可以使用通常的: self.loginFacebook = function )() { var deferred = $q.defer(); var theReq = { method: 'GET', url: API + '/login/facebook' }; $http(theReq) .then(function(data){ deferred.resolve(data); }) return deferred.promise; } 或者它是完全正确/安全/正确的程序,直接在窗口位置中的URL: self.loginFacebook = function (){ $window.location.href = API + '/login/facebook'; } 而且,从这个我怎样才能从API发回一个令牌? 我似乎无法修改callback函数来做到这一点? router.get('/login/facebook/callback', passport.authenticate('facebook', { successRedirect : 'http://localhost:3000/#/', failureRedirect : 'http://localhost:3000/#/login' […]

oauthcallback后护照会话消失

制作与Ionic,Angular,nodejs等混合应用程序 用户使用电子邮件和密码login,然后想要将第三方身份validation添加到他们的帐户。 他们被序列化进入会话。 我们使用护照进行检查,如果他们有第三方授权,如果没有发送他们这样做。 当用户回到callbackurl时,我们不知道他们是谁,因为req.session是未定义的。 编辑:我一直在试图简化代码来解决问题的路线。 // require everything and app.use them // this is what I'm using for the session config app.use(session({ secret: 'thisIsASecret', resave: false, saveUninitialized: false, cookie: {secure: true, maxAge: (4*60*60*1000)} })); var user = { // simple user model for testing id: 1, username: 'username', password: 'password', oauthId: null }; passport.serializeUser(function(user, […]

Passport + Node – req.isAuthentiated不是Object.isLoggedIn中的函数

我的代码有一个错误,带有护照function。 我遵循这个教程: 遵循示例教程 我从nodemon server.js中的/ routes文件中得到一个错误: TypeError:req.isAuthentiated不是一个函数 而当我尝试login浏览器窗口(我可以注册,而数据库正在存储用户)这个错误: TypeError: req.isAuthentiated is not a function at Object.isLoggedIn [as handle] 这是一个护照function,我很困惑如何解决这个问题。 server.js: var express = require('express'); var app = express(); var port = process.env.PORT || 8080; var mongoose = require('mongoose'); var passport = require('passport'); var flash = require('connect-flash'); // messages stored in session var morgan = require('morgan'); […]