Tag: cookie

如何确定用户在使用护照时注销?

今天开始学习节点,我几乎肯定我的用户没有被正确注销,我不明白为什么。 为了login用户,我在路由文件中写了下面的代码 app.post('/api/signup', passport.authenticate('local-signup', function(err, res, req) { console.log(res); })); 然后在另一个文件这个代码来处理我的用户login的逻辑 passport.serializeUser(function(user, done) { console.log("serializeUser"); console.log(user); done(null, user.id); }); passport.deserializeUser(function(id, done) { console.log("deserializeUser"); console.log(id); User.findById(id, function(err, user) { done(err, user); }); }); passport.use('local-signup', new LocalStrategy( { usernameField: 'username', passwordField: 'password', passReqToCallback: true }, function(req, username, password, done) { console.log(req.sessionID); process.nextTick(function() { User.findOne({ 'local.username': username }, […]

无法使用快递中间件创buildcookie

每当新用户注册我的应用时,我都会尝试创build一个cookie,表示这是他们第一次login。 我发现这个线程 ,大致遵循它,但它不工作。 这是我现在的代码: // setting up the middle ware export default function () { return function () { const app = this app.use(cookieParser()) app.post('/app/signup/end', [firstTimeCookie(app), signUp(app)]) } } 不工作的中间件是firstTimeCookie() , signUp()工作正常。 // in firstTimeCookie: export default function (app) { return function (req, res, next) { const cname = 'FIRST_SIGNUP' const cvalue = true var […]

节点Express会话和离子angular度之间的会话丢失

我在节点上使用快速会话来存储用户的数据。 我允许访问控制允许来源和访问控制允许证书。 所以在我的请求中,我设置了Credentials等于true: return this.http.post('https://localhost:2800/login', profile, {withCredentials: true}) 问题是,如果应用程序向其他站点发出任何请求,或者在S3上请求映像,则与服务器的会话将丢失。 (我必须再次login)。 这只发生在我的networking浏览器(运行离子服务),一旦我加载我的应用程序在物理智能手机运作良好。

我如何强制删除会话ID cookie与快速会议?

我正在使用快速会话模块来设置到期年龄的会话。 在这个年龄之后,当页面被刷新时,cookie将被删除。 但是,比如当用户注销时,我想强制删除这个cookie。 我已经使用req.session.destroy.成功销毁了会话req.session.destroy. 我试过使用: res.clearCookie('SID').status(200).send('Page'); 里面req.session.destroy,虽然,如果我在浏览器中查看cookie的详细信息,我看到内容设置为什么都没有,过期date设置为Thursday, 1 January 1970 at 01:00:00,虽然cookie不会删除自己。 我还设置了未unset: 'destroy'会话存储configuration中的unset: 'destroy' ,但这并没有解决我的问题。 中间件: app.use(session({ store: new MemoryStore({ checkPeriod: 86400000 }), cookie: { secure: true, maxAge: 10000 }, secret: secret, resave: false, saveUninitialized: false, name: 'SID', unset: 'destroy' })); 提前致谢。

无法设置由node.js发出的cookie

美好的一天! 有一个node.js服务器,授权后发送cookie。 服务器响应中包含“Set-Cookie”,但浏览器不接受它们。 请求服务器通过JQuery的AJAX发送。 服务器: var express = require('express'), http = require('http'), app = express(), mysql = require('mysql'), cookie = require('cookie'); app.use(function (req, res, next) { res.setHeader('Access-Control-Allow-Origin', '*'); res.setHeader('Access-Control-Allow-Methods', 'GET, POST, HEAD'); res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type, Authorization'); res.setHeader('Access-Control-Allow-Credentials', true); next(); }); app.post('/login', jsonParser, (request, response) => { if(!request.body) return response.sendStatus(400); var dbHandler = mysql.createPool({ database : config.get('db:database'), […]

如何创build会话express.js

我运行本地主机:3000 /名称/约翰,创build一个cookie,然后本地主机:3000 /名称显示cookie我有一个控制台错误“TypeError:无法读取未定义的属性'名称' 看我的代码 var express = require('express') , http = require('http') , path = require('path') ; var app = express(); app.configure(function(){ app.set('port', process.env.PORT || 3000); app.use(express.bodyParser()) ; app.use(express.methodOverride()) ; app.use(app.router); app.use(express.cookieParser()); app.use(express.session({ secret: 'secret'})); }) ; app.get('/name/:name', function(req, res){ res.cookie('name' , req.params.name).send('<p>the cookie <a href="/name">Go here</a></p>') ; }); app.get('/name', function(req, res){ console.log(req.cookies.name); res.send("index"); }); […]

表示authentication中间件在PUT请求后无法正确redirect

我正在使用下面的中间件passportjs。 假设用户在请求某些事情时是否login。 如果他没有login,他应该被redirect到login页面。 我有一个请求路由如下: app.put('/fantasyteams/:fantasyTeamId', auth.requiresLogin, fantasyteams.update); 当用户尝试更新网站中名为“幻想团队”的资源时,将会调用此路线 auth.requiresLogin是一个中间件,如下所示: exports.requiresLogin = function (req, res, next) { if (req.isAuthenticated()) { return next() } return res.redirect("/signin"); }; login我的用户后,我通过删除会话cookie来模拟会话过期。 此后,我通过网站做了一个PUT'/ fantasyteams / 123'的更新幻想团队号码123。 fantasyteams.update只是一个mongodb / mongoose保存操作: exports.update = function(req, res){ var fantasyteam = req.fantasyteam; fantasyteam = _.extend(fantasyteam, req.body); fantasyteam.save(function(err){ res.jsonp(fantasyteam); }); }; 正如所料,上面的路由处理程序(app.put …)抓住了请求,将它传递给auth.requiresLogin中间件来检查用户是否login。因此,事实certificate,用户没有login,因为我删除他的会话cookie。 按预期调用res.redirect。 但是,该网站不会redirect到login页面。 我在node.js命令日志中看到了这一点: PUT […]

express.js不在nodeunittesting中保存会话数据

更新底部! 我的node.js服务器使用express.js来pipe理会话。 login后,我将一些用户信息存储在req.session中。 我有一个注销端点,它只是在发送响应之前从req.session删除用户数据。 随着用户的每个请求,我使用authentication中间件来确保会话中仍然存在用户数据,因此删除会话对象中的用户数据将会导致后续authentication失败。 为了testing我的服务器,我有一个nodeunittestinglogin,调用几个端点,注销,然后尝试调用另一个端点。 我希望最后的端点在validation失败,因为我以前吹走了用户数据。 相反,当我最后一次打电话时,我的用户数据仍然存在 。 就好像删除它的注销电话没有被写回到会话存储中一样。 这是我的app.js: app.use(express.cookieParser('secretPassword')); app.use(express.cookieSession({key: 'someKey'})); … app.get('/logout', accounts.logout); app.get('/account', auth.authenticateSession, accounts.show); auth.js: exports.authenticateSession = function(req, res, next) { if (!req.session.user) { return res.json(401, { error: 'Access denied. You must be logged in to make this request.' }); } … } accounts.js:退出: exports.logout = function(req, res) { […]

客户端cookie不能在node.js中使用express存储在redis存储区中

我开发一个应用程序使用Express和Node.js与Redis作为会话存储。 首先我会告诉你我的代码。 var express = require('express'), redis = require('redis'), var app = express(); app.use(express.urlencoded()); app.use(express.json()); app.use(express.cookieParser()); app.use(express.session({ secret: secret, key: 'express.sid', store: new RedisStore({ host: '127.0.0.1', port: 6379 }), cookie: { maxAge: 3600000 } })); app.use(express.methodOverride()); 这对我来说工作正常,但是当我在浏览器中看到我的请求标题时,它显示的cookie值如下。 Cookie:express.sid=s%3AmF_egbthwH9xtg6E3ts9HHLn.l9zuDq1IcApdTUwIP96vpRSTiDLA99iQS2T4HVpV0tE 但是,当我使用redis-cli检查redis时,只是显示了“sess:”键下的一半键,如下所示。 sess:mF_egbthwH9xtg6E3ts9HHLn 我的目的是否有任何问题/错误?

ExpressJS会话与Cookie

我试图使用cookie来build立ExpressJS 4.2和cookierparsing器的用户会话,但是我发现的所有文档都是针对Expressjs 3.x或更旧版本的。 有人能指出我正确的方向吗? 文档或代码片断将不胜感激。 提前致谢! ====== 我想使用PassportJS来validation本地用户与MongoDB,一切正常,除了这条路线(确保总是重新定向到/,即使当在MongoDB中find用户/通行证 // reusable middleware function ensureAuthenticated(req,res,next) { if(req.isAuthenticated()) {return next();} res.redirect('/'); // if failed… } router.get('/panel', ensureAuthenticated,function(req, res){ res.render('panel', {obj: testArr}); }); 那是因为ensureAuthenticated找不到活动的cookie。 我的app.jsconfiguration是这样的: var express = require('express'); var path = require('path'); var favicon = require('static-favicon'); var logger = require('morgan'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); […]