Tag: passport.js

Passportjs自定义callback – “密码错误”消息

对于常规authentication,“错误密码”消息可通过failureFlash获得 app.post('/login', passport.authenticate('local', { successRedirect: '/', failureRedirect: '/login', failureFlash: true }) ); 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.' }); […]

将未经身份validation的用户redirect到使用node.js和angularjs的默认URL

我已经使用node.js restify和angularjs来创build一个没有用户pipe理的Web应用程序。 现在,我想添加用户pipe理function。 用户需要login才能访问networking应用程序。 如果他们没有通过身份validation,他们将被redirect到默认的urlwww.webroot.com/login.html 。 我正在查看正确的node.js模块来实现此function,但目前处于亏损状态。 引起我注意的两个模块是passport-restify和passport-http 。 https://www.npmjs.com/package/passport-restify https://www.npmjs.com/package/passport-http 这里有一些问题来实现这个function; 哪个node.js模块可以用来实现这个用户loginfunction? 两者有什么区别? 实际的URLredirect操作是使用angularjs还是node.js完成的? 用户login的示例代码示例是什么? 到目前为止,我find了文档,但很less的示例代码。

快递+护照,错误:不能发送请求护照,不会抛出任何错误

尝试第一次使用护照签署应用程序的节点,并不能得到任何错误的命令。 负载太多后,响应: 未收到数据 ERR_EMPTY_RESPONSE 找不到这个错误的任何解决scheme。 路线 loginRouter.route('/login') .get(loginController.getLogin) .post(loginController.postLogin); postloginfunction: var postLogin = function(req, res, next){ passport.authenticate('local', { successRedirect: '/', failureRedirect: '/auth/login', failureFlash : true }); }; passport.js var passport = require('passport'); var localStrategy = require('passport-local').Strategy; var bcrypt = require('bcrypt-nodejs'); var User = require('../app/models/model')().User; module.exports = function(){ passport.use('local',new localStrategy({ usernameField: 'username', passwordField: 'password', passReqToCallback : […]

Express会话和PassportJS之间的区别

我正在考虑使用快速会话存储针对OAuth 2提供程序进行身份validation的用户的访问令牌,并向客户端应用程序提供安全签名的Cookie。 根据我的理解,我可以在会话存储服务器端的后续请求(例如mongodb)中检索与cookie关联的令牌,然后我可以使用这个请求中的承载授权标头来使用Express路由分离终点。 我遇到了PassportJS,并试图弄清楚我是否需​​要在我的设置中使用它。 目前,我正在使用快速应用程序处理loginPOST请求,然后使用资源所有者密码凭据授予types请求stream来发出访问令牌请求。 这工作正常,我收到一个访问令牌以及来自提供程序的刷新令牌和到期时间。 据我所知,PassportJS为各种提供者提供了authentication策略,但是我不确定它会支持在我的情况下使用的授予types。 另外我已经在做请求和接收令牌的工作,所以不知道PassportJS对我有多大的好处。 从阅读快速会议文档,我认为这将给我所有我需要的,再加上我可以设置cookie的到期时间,我从api网关得到的令牌到期时间。 我认为PassportJS坐在快速会话之上,并且简单地访问快速生成的会话,是正确的吗?

一旦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用户。