Articles of passport.js

Passportjs Facebookloginstream程(passport-facebook vs passport-token)

使用Node,Express和Passport。 好的,我和我的团队正在构build双面市场types应用程序的REST API。 我们已经为电子邮件和密码login设置了一个基本的LocalStrategy。 我们希望使API用户代理不可知,所以我们可以通过web,Android或iOS使用API​​。 但是我们感到困惑的是FBloginstream程。 问题是,Passportjs幕后究竟发生了什么。 我们已经考虑过“护照 – 脸书”和“护照 – 脸书 – 标记”的策略,并不能真正决定去哪一个。 这是我目前对stream量的理解: 如果这是正确的,我最好让客户端从FB获取access_token然后发送给我,或者让FB通过redirect和callbackURL处理它? 护照令牌: passport.use('facebook-token', new FacebookTokenStrategy( { clientID: 'xxx', clientSecret: 'xxx' }, function(accessToken, refreshToken, profile, done) { // asynchronous //console.log("into passport auth"); process.nextTick(function() { User.findOne({'facebook.id': profile.id}, function(error, user) { console.log("user is " + JSON.stringify(user)); console.log("profile is " + JSON.stringify(profile)); //do user […]

与passportjs错误:未知的身份validation策略“本地”

我正在开发一个nodejs应用程序并使用passportjs进行身份validation。 我正在使用护照的本地策略。 但是当我尝试login时,出现以下错误: Error: Unknown authentication strategy "local" at attempt (/home/project/node_modules/passport/lib/middleware/authenticate.js:166:37) at authenticate (/home/project/node_modules/passport/lib/middleware/authenticate.js:338:7) at exports.authenticate (/home/project/controllers/RegistrationsController.js:87:4) at callbacks (/home/project/node_modules/express/lib/router/index.js:164:37) at param (/home/project/node_modules/express/lib/router/index.js:138:11) at pass (/home/project/node_modules/express/lib/router/index.js:145:5) at Router._dispatch (/home/project/node_modules/express/lib/router/index.js:173:5) at Object.router (/home/project/node_modules/express/lib/router/index.js:33:10) at next (/home/project/node_modules/express/node_modules/connect/lib/proto.js:193:15) at /home/project/node_modules/express-flash/lib/express-flash.js:31:7 这是我的passport-config.js文件: var passport = require('passport'); var LocalStrategy = require('passport-local').Strategy; var User = require('../models/user'); passport.serializeUser(function(user, done) { done(null, user.id); […]

Passport.js + Express.jsauthentication后将用户转发到原来的目的地

我有一个应用程序,是在服务器上的Node + Express + Passport和客户端上的jQuery + Backbone.js。 客户端使用URL中的哈希标签,但对于某些function来说,重要的是用户login。 我希望应用可以通过URL访问,例如http://mydomain.com/app#cone/waffle/flavor/mint/toppings/sprinkles ,以便: 如果用户已经login,他们直接去请求的URL没有麻烦 如果用户还没有login,他们去/login ,然后去请求的URL 在这个SOpost之后, 在Node.js Passport的Google策略上自定义returnUrl ,我已经这么做了 如果他们已经login,他们直接去URL,哈希标签和所有 如果他们没有logging,它会把他们带到login页面,然后到请求的url,但… 它似乎从login后redirect的原始url中去掉散列参数。 有没有办法保存哈希参数时redirect到原来的目的地? 从这篇文章, 从请求url获取散列参数我得到的想法是散列标签不可用在服务器上,这是使用散列标签的整个点。 所以我怀疑这是不可能的。 也许caching在本地参数不知何故,检索他们redirect,说[original URL minus hastags] + #use-cached-params ?

使用Passport.jsvalidationangular色和身份validation

所以我想在API中制作一些路由,根据MongoDB中定义的用户angular色显示不同的数据。 这是我现在所拥有的一个样本,它的工作原理 router.get('/test', passport.authenticate('bearer', {session: false}), function (req, res) { if (req.user.role == "premium") { return res.send('you can see this content'); } else { return res.send('you can not see this content'); } }) 然而,最终目标是向用户呈现至less一些东西 ,即使他们没有以正确的angular色login或authentication。 router.get('/test', passport.authenticate('bearer', {session: false}), function (req, res) { if (req.user.role == "premium") { return res.send('this is premium content'); } else […]

类和接口来编写types化的模型和Mongoose在Typescript中使用明确的模式

我怎样才能使用types和接口来使用绝对的TypeScript来编写types化的模型和模式。 import mongoose = require("mongoose"); //how can I use a class for the schema and model so I can new up export interface IUser extends mongoose.Document { name: String; } export class UserSchema{ name: String; } var userSchema = new mongoose.Schema({ name: String }); export var User = mongoose.model<IUser>('user', userSchema);

护照js如何在会话中存储用户对象?

我正在使用节点/expression护照在我的发展。 我遇到一篇文章说: Express加载会话数据并将其附加到请求。 由于护照将序列化的用户存储在会话中,因此可以在req.session.passport.user中find序列化的用户对象。 但令我惊讶的是,浏览器cookie中sessionID存储的值在login前后保持不变。 那么序列化的用户对象存储在哪里呢? 我以为它最初存储在用户sessionid cookie中,但似乎并非如此,因为我仍然可以通过req.session.passport.user访问我的用户对象

在callback函数中,Passport-Facebook访问req对象

在Facebook上为nodejs护照authenticationcallback,你如何获得callback中的req对象? passport.use(new FacebookStrategy({ clientID: 123456789, clientSecret: 'SECRET', callbackURL: "http://example.com/login/facebook/callback" }, function(accessToken, refreshToken, profile, done){ // Is there any way to get the req object in here? } ));

nodejs +护照+快递3.0 +连接闪光灯不闪烁?

我正在使用护照本地策略来validation用户。 我遵循了Jared Hanson给出的指导,并安装了连接闪光灯,以便为req对象提供flash方法。 所以我的一个请求处理程序如下: app.post('/login', passport.authenticate('local', { successRedirect: '/' , failureRedirect: '/login' , successFlash: 'Bienvenido' , failureFlash: 'Credenciales no válidas' }) ); 当用户login失败时,它将用户redirect到/login,但不会闪烁任何内容:/ 更新:我使用mongodb会话存储,我看到这个: > db.sessions.find() { "_id" : "qZ2eiTnx6r9LR25JOz/TGhiJ", "session" : "{\"cookie\":{\"originalMaxAge\":null,\"expires\":null,\"httpOnly\":true,\"path\":\"/\"},\"passport\":{\"user\":\"4ffb5b5db9cc16b615000001\"},\"flash\":{\"error\":[\"Credenciales no válidas\"],\"success\":[\"Bienvenido\"]}}" } 所以这些消息被插入到会话对象中,但是它们不被拉出。 我应该做一些特别的吗?

什么是更好的方式来validationExpress 4路由器上的一些路由?

我正在使用Express 4,我有一个由passport.js保护的路由,如下所示: var media = require('express').Router(); media.get('/', function(req, res) { // provide results from db }); media.post('/', passport.authenticate('bearer'), function(req, res) { // This route is auth protected }); 所以 – 收集路线应该(大部分)不应该保护我,并创build/更新路线应该。 但是这需要我把护照传给我所有的路由文件(到目前为止我已经有7个了),然后把它作为一个中间件添加到其中的一些文件中。 我喜欢这个版本,你可以这样做: var router = require('./my-router'); app.use('/api/route', passport.authenticate('bearer')); app.use('/api/route', router); 但是,这需要我的所有路线授权。 有没有更好的方法来通过护照一路?

node.jscallback中的“完成”和“下一个”之间的区别

在护照[configuration身份validation]文档中,它有一个相当吓人的function,使用神秘function“完成”。 passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function (err, user) { if (err) { return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username.' }); } if (!user.validPassword(password)) { return done(null, false, { message: 'Incorrect password.' }); } return done(null, user); }); } )); 现在,在快速文档中有相当多的方法可以传递下一个。 app.use(function(err, req, res, […]