Tag: passport.js

会话在两个本地Node.js服务器上

我有两个本地的Node.js服务器: HTTP://本地主机:3000 HTTP://本地主机:3001 我使用express.js和passport.js进行身份validation。 validation工作正确,但是如果: 我在服务器1上login 我在服务器2上login 那么服务器1上的会话消失。 如何防止这种情况? app.use(bodyParser()); app.use(cookieParser()); app.use(session({ secret: '12345', resave: true, saveUninitialized: true })); app.use(passport.initialize()); app.use(passport.session()); passport.use(new LocalStrategy( function(username, password, done) { users.getActiveByUsername(username, function(err, user) { if (err) {console.log(err); return done(err); } if (!user) { return done(null, false, { message: 'Incorrect username' }); } if (user.password != password) { return […]

Express.js和passport.js,但不能获得/login

我试图build立一个快速的应用程序,但现在我卡在login过程。 我不确定这与我遇到的问题有什么关系,但是我的学校分配说我必须使用passport.js来创build一个login表单。 所以,我遇到的问题是,每当我尝试在localhost:3000 / login的浏览器中呈现我的页面时,我都会收到以下消息: CANNOT GET /login 我的代码可能还有更多的问题,但由于我已经得到这个错误,所以不可能find。 我的默认应用程序文件 const express = require('express'); const app = express(); app.listen(3000, () => { console.log('Example listening on port 3000!') }); const loginRoute = require('./routes/logins.js'); app.use('/login', loginRoute); const passport = require('passport') , LocalStrategy = require('passport-local').Strategy; passport.use(new LocalStrategy( function(username, password, done) { User.findOne({ username: username }, function(err, user) { […]

app.get(“/ api / current_user”..不会在passport.jsvalidation后触发

我是NodeJS的新手。 我正在尝试创build一个简单的Web服务器。 我现在只使用NodeJS和Passport.js(使用谷歌战略)。 目前,所有的app.get(“”)调用工作,当我没有身份validation,但一旦我authentication与谷歌和callback发生,我不能再访问任何app.get路线。 我试着在箭头函数中放置一个断点,它从来没有调用,只是从浏览器加载auth cookie时挂起。 这是我目前的代码: Index.js const express = require('express'); const mongoose = require('mongoose'); const cookieSession = require("cookie-session"); const passport = require("passport"); const keys = require('./config/keys'); require('./models/User'); require('./services/passport'); mongoose.connect(keys.mongoURI); const app = express(); app.use( cookieSession({ maxAge: 30 * 24 * 60 * 60 * 1000, //30 days keys: [keys.cookieKey] }) ); app.use(passport.initialize()); app.use(passport.session()); […]

如何使用Passport.js获取当前会话的用户名?

如何在路由users.js使用Passport的{user}参数,我可以通过routes.js访问这些routes.js ? 这种情况是我需要在多个新的路由文件中访问Passport参数,所以我不需要使用routes.js作为包含所有应用程序路由的唯一文件。 app.js – 我只隔离感兴趣的部分 const express = require('express') const session = require('express-session') const cookieParser = require('cookie-parser') const bodyParser = require('body-parser') const passport = require('passport') const flash = require('connect-flash') const app = express() app.use(session({ secret: 'stackoverflow', resave: true, saveUninitialized: true, })) app.use(passport.initialize()) app.use(passport.session()) app.use(flash()) const index = require('./routes/index') const users = require('./routes/users') require('./config/passport')(passport) // […]

节点,Express 3和Passport:login表单不能正常工作

我是Node新手,有一个Node,Express和Passport安装程序,看起来可以工作。 也就是说,我看不到任何错误消息。 问题是当我去login页面,并尝试login,没有任何反应。 点击button后页面刷新,但没有采取任何操作。 我已经粘贴下面的代码。 提交表单时,terminal输出如下: 08:19:53 web.1 | POST /login 302 3ms – 68 08:19:53 web.1 | GET /login 304 11ms 08:19:53 web.1 | GET /stylesheets/base.css 304 1ms 这是login视图(Jade): – if (message) p strong =message form(method="post", action="/login") fieldset label(for="username") Username input.text-input(type="text", name="username") label(for="password") Password input.text-input(type="password", name="password") button.btn-submit(type="submit") Login! a.btn-cancel(href="/") Cancel 下面是最初调用login页面的代码(为了清楚起见,我拿出了其他的东西): app.js app.get("/login", routes.login); […]

使用Passport持久会话安全时,是否是authToken?

在使用护照本地策略时,我正在寻找一些有关最佳实践的信息。 我去通过本地战略的例子,使用authToken,login持久性,在github上find。 与同事交谈时,他们提出了这样一个问题:如何将此令牌存储在会话cookie中,比存储密码更安全,因为它本质上就是您在服务器上的身份validation身份。 那么我如何回答这个问题呢? 这是一个绿色的问题,我承认没有完全理解整个生命周期。 那么像bccrypt和mongo一样,这是一个安全的解决scheme。 如果仅仅是一个例子,并不一定意味着要显示一个强大的解决scheme,那么有什么最佳实践来保证我们的用户和应用程序的安全? https://github.com/jaredhanson/passport-local/tree/master/examples/express3-mongoose-rememberme

限制对所有路线的访问权限

我开始尝试使用ExpressJS + AngularJS,我遇到了一个压力的情况。 我的目标是拥有一个login页面和一个仪表板页面,并使用Passport + MongoDB我将对用户进行身份validation,如果凭据正确,则将其redirect到仪表板页面。 我已经开始使用angular-express-seed并对其进行了修改,所以我结束了前面提到的观点: $routeProvider. when('/login', { templateUrl: 'partials/login', controller: 'LoginCtrl' }). when('/dashboard', { templateUrl: 'partials/dashboard', controller: 'DashboardCtrl' }). otherwise({ redirectTo: '/login' }); 我正在服务每个部分观点: app.get('/partials/:name', routes.partials); exports.partials = function (req, res) { var name = req.params.name; res.render('partials/' + name); }; 除了我可以直接访问仪表板的部分(根本不login)之外,login系统工作正常。 所以我想我需要弄清楚在授予用户访问仪表板(或任何其他方面)之前,用户是否已通过身份validation。 我发现这是诀窍: function ensureAuthenticated(req, res, next) { if (req.isAuthenticated()) { return […]

如何访问node.js中的req.host?

我是node.js世界的新手。 我正在使用passportjs库来validation与API密钥的用户。 我正在试图做的是与API密钥一起。 我也想检查请求的主机名。 app.post('/api/authenticate', passport.authenticate('localapikey'),//passport module method to authenticate the api key function(req, res) { console.log('Authenticated'); }); 我不知道如何passportjs调用下面的函数。 但是在post请求到达“/ api / authenticate”path之后,它肯定会调用这个函数。 我也想在下面的函数中访问req.host。 passport.use(new LocalStrategy( function(apikey, done) { console.log(req.host); } 可能吗? 任何深入了解这一点将高度赞赏。 谢谢。

取消同步服务器响应

在一个用户的成功注册,我目前看到一个大多为空的页面,文字undefined. Redirecting to /app undefined. Redirecting to /app顶部的undefined. Redirecting to /app 。 更新:我还应该提到,表单提交后,我被redirect到/用户。 所以/用户我看到上面提到的文字。 我认为这是因为req.redirect调用在user.savecallback中,但我不确定修复是什么。 我正在使用mongoose作为ORM。 var User = require('../models/user'); module.exports = function(app) { app.post('/users', function(req, res, next) { var user = new User({ email: req.body.email, password: req.body.password }); user.save(function(err) { if (err) res.send(412, {message: err}); else req.login(user, function(err) { if (err !== undefined) return […]

如何通过TwitterStrategy,PassportJS传递数据?

我有三种用户: 查看器 (链接login:auth / v / twitter) 创build者 (链接login:auth / c / twitter) pipe理员 (链接login:auth / a / twitter) 而且我也有3个不同的数据库/集合 c_viewer c_creator C_ADMIN 每种用户都有不同的链接login。 现在让我们来看看代码 var passport = require('passport') ,TwitterStrategy = require('passport-twitter').Strategy; passport.use(new TwitterStrategy({ consumerKey: config.development.tw.consumerKey, consumerSecret: config.development.tw.consumerSecret, callbackURL: config.development.tw.callbackURL }, function(token, tokenSecret, profile, done) { process.nextTick(function(req, res) { var query = User.findOne({ 'twId': profile.id}); […]