使用Auth所需image processingHTML PDF
我正在用wkhtmlpdf和nodejs创buildpdf文档服务器端。 客户端发送要呈现的html(可能包含img标签与源)。 当用户在浏览器中预览html时,他们上传到他们账户的图像显示正常,因为用户通过浏览器被authentication,节点路由可以简单地根据用户ID(保存到会话)和图像ID (通过每个图像请求)。
问题是当图像试图在wkhtmltopdf webkit中渲染时,渲染器在通过独立的进程通过wkhtmltopdf的节点执行图像请求时未经过validation。 对GET /user/images/<imageId>
之类的请求将会失败,因为在headless wkhtmltopdf渲染器内进行请求时会话未被设置。
有没有办法通过一些wkhtmltopdf选项通过身份validation或可能是不同的图像身份validation方式? 唯一的限制是不公开图像。
我问了一个类似的问题,可能会帮助你: 在身份validation墙背后生成PDF
WKHTMLTOPDF有--cookie-jar
这应该得到你所需要的。 请注意,它不适合我,我用另一个解决scheme解答了我自己的问题。 简而言之,我通过CURL访问页面 – 更加灵活 – 然后编写一个临时文件,然后将其转换为PDF,然后删除临时文件。
一个小圆的回合,但它完成了工作。
为了实现身份validation,我在图像path中允许使用cookie标识(将连接键的默认值connect.sid)作为查询选项。 唯一的“难题”是因为从服务器的angular度要求图像,所以你必须确保所有的图像path是绝对的域path,而不是相对于你的应用程序(除非这两个是相同的当然)。
Expressjs的步骤:
-
通过req.query
(eg ?id=abc123 where abc123 is the req.cookies['connect.sid'], or req.signedCookies['connect.sid'] if your using a secret as you probably should )
设置在标识中查询sid的标识中间件(eg ?id=abc123 where abc123 is the req.cookies['connect.sid'], or req.signedCookies['connect.sid'] if your using a secret as you probably should )
您可能需要确保首先设置查询中间件。 -
确保req.headers在cookieparsing器之前包含这个会话id key和value,这样会话就可以正确设置了
(eg if a cookie exists append a new one or if one does add it as the first req.headers.cookie = 'connect.sid=abc123;')
-
确保所有的图像path包含完整的url
(eg https://www.yourdomain.com/images/imageId?id=abc123)
一些额外的tid位:图像源replace应该可能发生在服务器级别,以确保用户不会复制/粘贴图像的URL与会话ID,并说电子邮件给一个朋友,这显然留下帐户劫持的大门。
- 一个好的npm模块散列和腌制用户login/ passwd?
- nodejs网站与活动目录permisssions
- 在unit testing中嘲笑Passport.js(本地策略)
- 我们如何在node.js中使用Firebase Auth创build用户?
- LocalStrategy和ClientPasswordStrategy之间的护照区别
- 带有Connect基本身份validation的Expressj不会设置请求用户
- 使用nodejs web服务器validation用户,但没有框架
- 使用express-jwt时,为什么我的授权标题在显式存在的时候丢失了
- 是否可以在Express上的白名单路由中应用基本身份validation/中间件?