Articles of passport.js

在Jade视图中检查会话variables

我使用NodeJS,ExpressJS,PassportJS和玉。 我有一个标题菜单,将显示login或注销。 如果用户尚未login,则显示login;如果用户已login,则login。 菜单在独立的jade文件中: menu.jade并包含在其余的jade文件中。 include menu 在menu.jade中如何检查用户是否已经login? 我可以用玉来检查会话variables吗? 像下面的menu.jade ? if ( req.session.name != null) a(href='/logout') Logout else a(href='/login') Login 谢谢

如何正确使用Passport.js?

我在用 : Node.js的 Express 4.0 Passport.js Google OAuth 2进行身份validation 对于每个用户,我存储在一个MySQL数据库(我没有关于这项技术的select)从他的谷歌个人资料(电子邮件等),访问和刷新令牌的一些信息,以及用户提供的额外信息他注册在我的应用程序。 我已经看到passport.js的不同用途,特别是关于如何将这些信息存储在会话中。 在passport.js的configuration页面上 ,我不太了解以下代码块的要点: passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 基本上,每次用户提出请求或访问页面时,都会向DB提出请求并检索信息。 有什么意义? 它使应用程序变慢。 当serializeUser被调用时(即信息存储在会话中),不应该检索数据库的信息吗? 我已经读过,在session中存储太多的信息可能会减慢应用程序。 什么是“太多”? 多less会减慢应用程序? 有人知道是否有testing吗? 我的应用程序页面需要一组关于我的用户的不同数据(例如,主页只需要他的名字,而configuration文件页面将需要一切,另一页需要知道他拥有的汽车等)。 如果passport.authenticate检查用户是否存在于数据库中(因此限制对数据库的读取请求大约为一个),或者只在会话中存储他的ID,并让我的页面向数据库在必要时? 我有另一个问题:在注册过程中,我首先让用户login他的Google帐户,我在某处存储他的个人资料的详细信息,让他填写一个额外信息的表格,然后我将所有内容插入到数据库中。 问题是我不知道如何正确存储他的Google帐户的详细信息,直到他们被插入数据库。 目前,我将它们存储在session ,然后在插入成功时删除它。 更具体地说,当我的数据库中找不到现有用户时,我在我的passport.authenticatecallback中: return done(null,false,userInfo); 因此,用户没有通过身份validation,我有两个问题:我必须存储该userInfo ,直到用户注册,我必须在注册完成后使用req.login() “手动”login他。 我应该允许他login自己的Google帐户后进行身份validation吗? 如果他没有完成注册,会不会对我造成安全问题? 最后,我读了关于使用Reddis。 这会帮助我解决这些问题吗? 非常感谢你 !

设置连接闪光中间件供护照使用

我想访问我的护照策略在其callback中指定的消息,如下所示: done(null, false, { message: 'No such user.' }); 。 到目前为止,我发现这些消息可以通过将选项failureFlash: true传递给passport.authenticate()函数来显示,这个函数的用法还需要安装connect-flash中间件。 所以我安装了模块并添加了var flash = require('connect-flash); 我的来源,以及app.use(flash()); 到我的快速应用程序的configuration方法。 但它仍然崩溃,方法.flash()不可用的错误。 我错过了什么? 更多代码: var http = require('http'); var express = require('express'); var passport = require('passport'); var googleStrategy = require('passport-google').Strategy; var flash = require('connect-flash'); passport.serializeUser(function (user, done) { done(null, user); }); passport.deserializeUser(function (obj, done) { done(null, obj); }); […]

如何使用nodejs / passport处理未经授权的请求

根据文档 ,如果我是这样处理身份validation请求,我将能够捕获成功的尝试。 app.post('/login', passport.authenticate('local'), function(req, res) { // If this function gets called, authentication was successful. // `req.user` contains the authenticated user. res.redirect('/users/' + req.user.username); }); 但是,像文件说: 默认情况下,如果身份validation失败,Passport将以401 Unauthorized状态响应,并且不会调用任何其他路由处理程序。 如果authentication成功,则将调用下一个处理程序,并将req.user属性设置为已通过身份validation的用户。 我如何处理未经授权的login尝试? 我知道我可以用自定义中间件来处理它,但有没有更好的方法?

如何结合护照和angular-UI路由

我想知道如何将angular度路由与护照相结合。 我find的所有示例都使用node.js路由。 var routerApp = angular.module('routerApp', ['ui.router']); routerApp.config(function($stateProvider, $urlRouterProvider) { $urlRouterProvider.otherwise('/home'); $stateProvider .state('home', { url: '/home', templateUrl: 'partial-home.html' }) .state('about', { // for example just show if is loggedIn }); 如何在上面的代码片段中实现这个function? function isLoggedIn(req, res, next) { // if user is authenticated in the session, carry on if (req.isAuthenticated()) return next(); // if they aren't redirect […]

sailsjs基于jwt令牌的authentication示例

我正在按照这个教程 。 但是,当我做sails lift运行我的应用程序,我越来越低于错误。 抛出新的TypeError('JwtStrategy需要一个函数从请求中检索jwt(请参阅选项jwtFromRequest)'); ^ TypeError:JwtStrategy需要一个函数来从请求中检索jwt(参见选项jwtFromRequest) 请帮我解决这个错误。

对于使用Node.js的Passport-Local,是否可以使用电子邮件而不是用户名进行身份validation?

我正在使用passport-local在我的节点应用程序上提供本地身份validation。 不过,我想改变这个用电子邮件地址而不是用户名进行validation。 有没有办法做到这一点? 谢谢。

Passport-local返回400错误,从不查询数据库

我试图在我的node.js应用程序中使用passport.js来validation用户与MongoDB。 我从来没有成功。 在post中,我发送“email”:“email@gmail.com”,“密码”:“testing” var passport = require('passport') , LocalStrategy = require('passport-local').Strategy; app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/fail' }) ); passport.use(new LocalStrategy({ emailField: 'email', passwordField: 'passw', }, function (emailField, passwordField, done) { process.nextTick(function () { db.collection(users, function (error, collection) { if (!error) { collection.findOne({ 'email': emailField, 'password': passwordField }, function (err, user) { if (err) […]

passport.initialize()中间件不用于Express 4.10自定义callback

任何人都可以帮助我这个。 我不断收到Error: passport.initialize() middleware not in use当我尝试连接到数据库中的用户Error: passport.initialize() middleware not in use 。 exception情况下工作得很好(不正确的密码/用户名未find)。 这是设置: 我正在使用的版本 // version node –version v0.10.33 express@4.10.2 passport@0.2.1 passport-local@1.0.0 server.js代码在这里 // server.js 'use strict'; var express = require('express'); var bodyParser = require('body-parser'); var session = require('express-session'); var passport = require('passport'); var flash = require('connect-flash'); var cookieParser = require('cookie-parser'); //Our custom […]

为passport.js本地策略添加额外的字段

默认情况下,passport.js只在其中间件中接受用户名和密码。 http://passportjs.org/guide/username-password/ 我如何添加第三个字段? 在我的情况下,我需要用户名,电子邮件和密码。