我的应用有一个路由/project/:id
,该路由受身份验证中间件保护,该中间件使用护照允许访问者使用其 Slack 帐户进行身份验证。
我想使用 phantomJS 将/project/:id
渲染为 pdf。我认为最好的方法是创建一个路由/print/:id
(相同的身份验证中间件(,该路由创建一个虚拟实例并使用open
方法来请求/project/:id
。
当请求/print/:id
时,浏览器会话被检测为正常,这很好。但是当 phantom 执行内部请求时,它的会话是未经授权的。最好的选择似乎是将浏览器会话复制到幻像会话上。
我注意到 phantom 的 open 方法允许设置参数,但我不知道请求对象的哪些属性需要传递给该设置参数。
我注意到有一个关于 cookie 的类似问题,但那里没有明确的解决方案,如果我理解正确,当您无法访问会话本身时,重新创建 cookie 可能更适合访问第三方。
我从这个问题中推断出你是应用程序的开发人员,并且PhantomJS与该项目位于同一服务器上。
如果这是真的,最简单和非常可靠的解决方案是检查/project/:id
请求是否是本地的,以及用户代理是否是PhantomJS的,并在那时禁用身份验证中间件。