Tag: passport.js

基本node.js表示authentication不起作用

我是新的node.js身份validation。 我想用护照,护照本地,做一些基本的authentication。 但是,当我尝试它,它总是去authentication失败。 我正在按照这个教程http://www.sitepoint.com/local-authentication-using-passport-node-js/ 这是我迄今为止: var express = require('express'); var app = express(); var qs = require('querystring'); var pg = require('pg'); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; //var expressSession = require('express-session'); //app.use(expressSession({secret: 'mySecretKey', cookie: { maxAge: 60000 }, resave: true, saveUninitialized: true})); app.use(passport.initialize()); app.use(passport.session()); app.use(express.static(__dirname + '/public')); passport.serializeUser(function(user, done) { done(null, user); }); […]

Node.js Passport成功login后显示用户名

我正在使用Node.js护照,并试图找出如何成功login后显示用户名。 在阅读完文档之后,我已经validation过我configuration了会话和中间件,这是我需要的,但是接下来的步骤是什么? 这是我的users.js文件: var express = require('express'); var router = express.Router(); var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = require('../models/user'); // Home router.get('/index', function(req, res){ res.render('index'); }); // Profile router.get('/profile', function(req, res){ res.render('profile'); }); // Register router.get('/register', function(req, res){ res.render('register'); }); // Login router.get('/login', function(req, res){ res.render('login'); }); // About-us router.get('/about-us', function(req, […]

为什么在使用sails-auth进行validation之后,“req.user”总是在/ user / me控制器中为空?

我目前正在开始使用Sails.js,并且想要将用户账户添加到我的玩具应用程序中,所以我安装了创build基于Passport的用户authentication系统的“sails-auth”软件包。 我可以通过发送POST /user来创build新POST /user ,我可以用POST /auth/locallogin。 该文件说: 通过带有参数标识符(email)和密码的/ auth / local进行本地策略validation。 这也将创build一个会话。 看到更多的passport.local。 但是,当我尝试GET /user/me ,哪些路由到控制器操作应返回会话中的当前用户,而页面则会给出一个空的响应。 为什么发生这种情况? 是否有某种configuration步骤,我错过了? 顺便说一句,我没有改变或混淆sails-auth包。 它还是全新的; “我”的行为看起来像这样: me: function (req, res) { res.ok(req.user); } 编辑 :我已经find了一个临时的解决方法,通过searchsails-auth回购问题。 您可以从req.user中获取string用户标识,而不是从req.user获取用户对象。

使用Androidlogin时,Passport.js会话未设置

在我的AuthController.js中,我检查login是否成功,并在会话中设置一个哈希码: req.logIn(user, function (err) { if (err) res.send(err); var redirectTo = req.session.redirectTo ? req.session.redirectTo : '/user/show/'+user.id; delete req.session.redirectTo; bcrypt.genSalt(10, function (err, salt) { bcrypt.hash(user.email, salt, function (err, hash) { if (err) { console.log(err); } else { req.session.passport.user_type = user.type; req.session.passport.user_avatar = user.avatar; req.session.passport.email = user.email; req.session.passport.token = hash; // here session is set! also when […]

Nodejs – Passport – 无法序列化用户进入会话

我正在使用下面的库: 护照的oauth2密码发放 我想要做的是以下几点: validation到API(用户名/密码) 获取访问令牌 从API获取用户configuration文件 logging用户使用护照 我正在使用下面的实现: PasswordGrantStrategy.prototype.userProfile = function(accessToken, done) { return done(null, { real_name: 'Foo Baz', email: 'test@test.com' }); } passport.use(new PasswordGrantStrategy({ tokenURL: 'http://api.local/oauth/token', clientID: "2", clientSecret: "", grantType: "password", }, function(accessToken, refreshToken, profile, done) { return done(null, profile); })); function authenticate() { return function(req, res, next) { var username = "email@email.com"; […]

为什么不res.redirect实际上redirect我?

我有一个基本的login控制器的表单,更新用户的$范围。 当他们点击一个button时,login()函数被触发。 .controller('loginCtrl', ['$scope','$http',function($scope,$http) { $scope.user = { 'username' : "", 'password' : "" }; $scope.login = function(){ $http.post('/login', $scope.user).then(function (response){ console.log(response.data); }); } }]); 这里是我的路由/login app.post('/login', function(req,res,next){ passport.authenticate('local-login', function(err, user, info){ if (err){ console.log(err); return next(err); } else if (!user){ return res.send(info); } else { req.logIn(user, function(err){ if (err){ return next(err); } else { […]

AWS Api网关:如何处理授权,身份validation,SSO等

我正在评论几种使用微服务结合api网关重新开发node.js restful单片应用程序的方法。 在使用aws api网关看来,虽然似乎有一些项目,我一直没能find很多的文件。 首先,我devise的应用程序必须能够支持SSO,我希望用户能够通过创build本地login或使用其当前的Facebook,Twitter等社交帐户进行注册。 这个过程如何被aws api网关处理,尤其是因为我需要使用自定义的数据库来写和读,更不用说授权用户了。 另外,例如,我的微服务有以下有限的上下文: 帐户(login,注册,档案pipe理), 计费(由于运行时间可能不适合无服务器,可能会selectdocker + ec2), 朋友(build立朋友关系), 文件(用户可以上传图片和video到他们的时间线 – 似乎是另一个docker+ ec2候选人); 我想使用api网关来保护所有的微服务端点,除了那些特定于login和注册的微端服务端点,应该怎么做呢? Node.js包含一个包,似乎通过Facebook,Twitter,本地等称为护照处理jwt和authentication用户,我可以使用这个与api网关authentication? 另外,如果api网关正在保护微服务,请求对象和响应对象如何在网关和微服务之间传递以满足各种请求? 此外,如果我决定构build一个自定义api网关,其中的网关正在监听另一个端口并包含在单独的docker容器中,它应该如何调整其他docker容器中侦听其他端口的微服务的权限? 简而言之,任何真正遍历这个过程并回答上面列出的问题的文档都是非常有用的。 此外,如果我以错误的方式看待这个问题或者提出错误的问题,那么在这方面的build议也会有所帮助。

asynchronous/等待请求内部护照策略

我到处寻找解决这个问题的答案,并尝试了不同的build议,但我仍然无法弄清楚。 我在护照中使用Steam API策略,在创build新的SteamStrategy后,我有一个callback函数来处理我的MongoDB集合。 我基本上只是检查当前login的用户是否在数据库中,如果没有,然后创build一个新的用户和.save()它到mongoDB。 这一切都工作正常,直到我决定我想要一个请求()蒸汽API一些额外的用户信息,我可以存储到新的用户。 但是,当我尝试将request()保存到variables和console.log()variables时,它总是表示为空。 我知道这是因为它是asynchronous运行的,但这就是为什么我等待,但没有成功。 我也尝试过实现一个callback – 地狱types的解决scheme,但遇到了一些严重的范围问题,我最后的陈述“return done(null,user)”; 无论如何。 如果有人能解释我的问题并提供解决scheme,那就太好了,谢谢! passport.use( new SteamStrategy( { returnURL: keys.returnURL, realm: keys.realm, apiKey: keys.steamAPI, proxy: true }, async function(identifier, profile, done) { const existingUser = await User.findOne({ steamInfo: { id: profile._json.steamid } }); if (existingUser) { middleware.updateMongo(existingUser); return done(null, existingUser); } ////////////////////////THE PROBLEM STARTS HERE///////////////////// const […]

nodejs护照总是失败的URL

我正在使用护照,允许通过我的网站上的Facebooklogin。 一切似乎工作得很好,但Facebook的网站callback总是去到failureRedirect,即使我从Facebook有回来的所有数据有效的令牌。 任何想法为什么发生这种情况? express = require "express" passport = require 'passport' FBStrategy = require('passport-facebook').Strategy Properties = require "./config.json" FB_APP_ID = REMOVED FB_APP_SECRET = REMOVED passport.serializeUser = (user, done) -> done null, user passport.deserializeUser = (obj, done) -> done null, obj fb = new FBStrategy clientID: FB_APP_ID clientSecret: FB_APP_SECRET callbackURL: "http://localhost/auth/facebook/callback" (accessToken, refreshToken, profile, done) -> […]

使用OO JavaScript的Node.js中的中间件

目前我正在尝试在面向对象的Node.js服务器中使用中间件“passport”。 重新启动服务器后,一切工作正常。 我可以访问不需要身份validation的路由。 但是当我试图访问一个路由与身份validation我总是得到响应401(无authentication)。 这似乎是好的,但不幸的是我不在LocalStrategy中input函数(用户名,密码,完成)。 所以我认为我的问题是我尝试在oo javascript风格中使用中间件。 我用来启动的模板来自RedHat OpenShift Cloud,可以在https://github.com/openshift/nodejs-custom-version-openshift/blob/master/server.js中看到 这里是我尝试使用护照中间件的服务器初始化方法: self.initializeServer = function() { self.createGetRoutes(); self.createPostRoutes(); self.app = express.create(); passport.use(new LocalStrategy( function(username, password, done) { console.log("TEST"); process.nextTick(function () { console.log('Here I am!'); return done(null, user); }); } )); self.app.configure(function() { self.app.use(passport.initialize()); }); // Paths without authentication self.app.get('/holy', function(req, res) {res.send('SHIT! \n')}); // Add GET […]