Tag: passport.js

facebook-pasport的callback可以dynamic构build吗?

当使用facebook-passport时,通常要做的就是在你使用的FacebookStrategy的构造函数中指定redirect_uri ,如下所示: passport.use("facebook", new FacebookStrategy({ //TODO: Correctly configure me clientID: "XXXXXXX" , clientSecret: "XXXXXXXXX" , callbackURL: "http://localhost:3007/auth/facebook/callback" }, function(accessToken,refreshToken,profile,done) { User.findByFacebookId(profile.id, function(err,user) { if(err){ return done(err);} if(!user){ return done(null,false)} return done(null, user); }); }) ); 那么你会设置这样的路线: app.get('/auth/facebook/login', passport.authenticate('facebook') ); app.get('/auth/facebook/login_callback', passport.authenticate('facebook', { successRedirect:"/login_ok.html" , failureRedirect:"/login_failed.html" } )) 是否有可能更改callbackurl,以便它包含传递给初始login调用参数的信息? 注意:这个问题更多的是为了保存信息而花费了我一些时间来解决问题,以避免其他人走上同样的道路。

在视图中显示passport.js身份validation错误消息

我有一个新的Sails.js项目使用Passport.js来validation用户。 我有基本身份validation工作(意味着用户可以注册并成功login),但是如果他们没有input正确的凭据,则希望在login视图中显示相应的错误消息。 我无法弄清楚如何在视图中打印任何错误信息。 这是我的设置。 我有config/passport.js ,其中包含以下内容: var passport = require('passport'), LocalStrategy = require('passport-local').Strategy, bcrypt = require('bcrypt'); passport.serializeUser(function(user, done) { done(null, user.id); }); passport.deserializeUser(function(id, done) { User.findOne({ id: id } , function (err, user) { done(err, user); }); }); passport.use(new LocalStrategy({ usernameField: 'email', passwordField: 'password', passReqToCallback : true }, function(req, email, password, done) { User.findOne({ email: […]

Node.js / Express / Passport是否有像CanCan for Rails这样的授权模块?

一旦用户被authentication,我想要一个方法来设置用户可以查看,编辑和删除的限制。 具体而言,除非他们是pipe理员,否则他们只能查看,编辑和删除他们自己拥有的文件。 我已经看到了EveryAuth和Ability.js的一些例子,只是想知道是否有与使用Passport.js

我可以使用html5本地存储来存储用户authentication会话信息

快速背景: 我正在写Mongo / Express / Angular / Node SPA并使用护照我已经设置了OAuthlogin选项来处理用户authentication/授权。 随着护照,我成功地维护服务器上的会话,所以我所有的XHR请求(需要它)正在检查login的用户。 在login时,服务器将基本的用户会话信息放入一个cookie中,以便客户端在授权callback中find,然后我使用angular-cookies的$ CookieStore访问客户端上的cookie,将其保存到rootcope并清除cookie 。 问题: 除了用户刷新浏览器的任何事件之外,这一切都是完美的,这会导致我的rootcope会话显然被清除。 所以我正在考虑在浏览器本地存储(使用store.js)中存储会话信息,然后即使在初始加载时,我也可以检查浏览器本地存储中存在的会话,并在已经有会话的情况下绕过OAuthlogin。 在用户会话信息存储在浏览器本地存储中是不是很糟糕的做法,或者是否存在一些后勤/安全问题? 这个应用程序没有任何感性的数据,注册是免费的,login是真的只有在那里,所以我可以跟踪用户和存储在应用程序中为每个用户创build的数据。 而用户会话永远不会有密码(我只允许OAuthlogin没有本地选项)。

在unit testing中嘲笑Passport.js(本地策略)

我正在使用Passport.js的本地策略来validation用户的API。 我正在编写此API的testing,我需要在testing中模拟Passport.js以模拟经过身份validation的/未经身份validation的用户访问API。 什么是最有效的方法呢?

在使用passport-saml进行身份validation之后,如何redirect到最初请求的url?

对不起,如果这是一个笨蛋的问题,但我有一些麻烦,理解我可以redirect客户端浏览器回到我们的SAML身份提供商(IdP)成功身份validation后最初请求任何URL。 我正在使用最新版本的护照,护照和快递。 例如,假设客户端从另一个不受保护的页面上的链接请求了/foo/bar ,但由于这是一个受保护的资源,因此我将redirect到/login ,这就是我调用passport.authenticate('saml') 。 app.get('/login', passport.authenticate('saml')); function ensureAuth(req, res, next) { if (req.user.isAuthenticated()) {return next();} else {res.redirect('/login');} } app.get('/foo/bar', ensureAuth, function(req, res) { … }); 这个调用将把浏览器redirect到我的IdP的login页面,并且在成功的authentication之后,IdP POST回到我的/login/callback路由。 在这条路线上,我再次使用passport.authenticate(saml)来validation响应SAML,如果一切顺利的话,我将redirect浏览器回请求的资源…但我怎么知道那个请求的资源是? 因为这是一个POSTcallback,我已经失去了与原始请求相关的任何状态。 app.post('/login/callback', passport.authenticate('saml'), function(req, res) { res.redirect('…can I know which url to redirect back to?…'); }); passport-saml自述文件中的示例只是显示一个硬编码的redirect回到根资源,但是我想redirect回原始请求的URL( /foo/bar )。 我可以向IdP发送一个url或其他值,这个IdP会在响应SAML中进行往返和回发? 如果是这样,我怎么可以在我的/login/callback路线访问它? 还是有一些更好的,快递/护照的方式来做到这一点,我失踪了? 任何帮助你可以提供将非常感激!

用NodeJS和Restifyredirect客户端

我正在为NodeJS,Restify和PassportJSbuild立一个REST后端进行身份validation。 一切工作除了最后一步,这是将客户端从后端/login/ Facebook /callbackredirect到应用程序的主页。 我在网上search,发现很多ExpressJS的答案,但没有任何有用的Node-Restify。 我已经设法拿起一些代码片段,这是我现在正在尝试的: app.get('/api/v1/login/facebook/cb', passport.authenticate('facebook', { scope: 'email' }), function(req, res) { req.session.user = req.user._id; res.header('Location', '/#/home'); res.send(); }); 响应被发送,但位置标题不包括在内,并且客户机呈现白色屏幕。 如何使用Node-Restify API做适当的redirect?

为什么Passport.js会给我一个中间件错误?

我正在尝试这里所述的解决方法 https://github.com/jaredhanson/passport/issues/14 app.use(passport.initialize()); app.use(passport.session()); app.use(app.router); app.use(express.static(__dirname + '/public')); 工作正常 app.use(app.router); app.use(express.static(__dirname + '/public')); app.use(passport.initialize()); app.use(passport.session()); 给 DEBUG: Error: passport.initialize() middleware not in use at IncomingMessage.<anonymous> (/…/node_modules/passport/lib/passport/http/request.js:30:30) at Context.<anonymous> (/…/node_modules/passport/lib/passport/middleware/authenticate.js:92:11) at Context.<anonymous> (/…/core/node_modules/passport/lib/passport/context/http/actions.js:21:25) at Strategy.success (native)

Node.js和Passport对象没有方法validPassword

请注意,我是Node.js中的初学者,请耐心等待:) 我正在使用Node.js + Express 3 + Passport创build一个简单的身份validation(本地)只是为了玩耍 和我到目前为止,当一个错误的用户名或密码input用户被redirect到一个错误页面 但是当用户input正确的用户名和密码时,我得到这个错误 node_modules\mongoose\lib\utils.js:435 throw err; ^ TypeError: Object { _id: 50b347decfd61ab9e9e6768f, username: 'saleh', password: '123456' } has no method 'validPassword' 我不确定那里有什么问题 app.js(我删除了不必要的代码): var passport = require('passport') , LocalStrategy = require('passport-local').Strategy; app.configure(function(){ app.set('port', process.env.PORT || 3000); app.set('views', __dirname + '/views'); app.set('view engine', 'ejs'); app.use(express.favicon()); app.use(express.logger('dev')); app.use(express.bodyParser()); app.use(express.methodOverride()); app.use(passport.initialize()); app.use(passport.session()); […]

NodeJS中的无状态身份validation库

我相信RESTful API的最佳实践是无状态的。 我读了关于无状态身份validation的技巧,但并不完全清楚如何实现它(看起来像一堆令牌等)。 PassportJS是一个很好的authentication库,但它不是无状态的? 是否有某种types的库可以帮助我创build无状态API(带有身份validation)? 我想要使​​用像Google,Twitter等SSO(单点login),所以如果库为我处理(比如PassportJS),这将是很好的。