首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在superagent中使用cookies?

如何在superagent中使用cookies?
EN

Stack Overflow用户
提问于 2012-08-12 12:28:51
回答 6查看 35K关注 0票数 37

我正在用express做cookie会话管理,如下所示:

代码语言:javascript
运行
复制
req.session.authentication = auth;

然后我用下面这样的方法验证经过身份验证的urls

代码语言:javascript
运行
复制
if(!req.session.authentication){res.send(401);}

现在我正在使用mocha、superagentshould为URL构建测试,但是我似乎找不到一种使用superagent获取/设置cookie的方法。我甚至试图在验证测试之前请求登录,但它不起作用,

我已经尝试将请求添加到mocha BDD套件的before语句中的登录,但是它仍然告诉我该请求是未经授权的,我已经测试了执行来自浏览器的请求的身份验证,但是它在套件中不起作用,你知道为什么吗?

EN

Stack Overflow用户

发布于 2020-05-02 10:13:41

2020 +

一种简洁的方法是:

  • 创建一个简单的cookie存储
  • 抽象设置Cookie在每个请求中发送
  • 仅在需要时更新cookie

注意,我保留了相同的URL,因为我使用了graphql,但您可以将其设为参数:

代码语言:javascript
运行
复制
const graph = agent =>
  agent.post('/graph')
    .set('cookie', cookieStore.get());

const handleCookie = res =>
  cookieStore.set(res.headers['set-cookie'][0]);

let currentCookie="";
const cookieStore = {
  set: cookie=>{currentCookie=cookie},
  get: cookie=>currentCookie,
};

module.exports = {graph,connectTestUser,handleCookieResponse};

您现在可以只使用cookie图(代理)来发送请求,并在您有可能更新您的cookie(设置或清除)的响应时发送handleCookie(response),例如:

代码语言:javascript
运行
复制
graph(agent).end((err,res) => {
  if (err) return done(err);
  res.statusCode.should.equal(200);
  handleCookie(res);
  return done();
});
票数 1
EN
查看全部 6 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11919737

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档