wkhtmltopdf允许使用webkit浏览器创建浏览器视图的屏幕截图。
我有一个Symfony 1.4应用程序需要登录,我想使用wkhtmltopdf创建一个"print this page“函数。
我如何才能安全地促进这一点。我正在考虑在每个屏幕上为print按钮创建一个一次性令牌,它允许wkhtmltopdf在不使用用户密码的情况下登录。
对于如何构建它,有什么建议吗?
发布于 2012-08-17 10:15:17
我们已经得出结论,使用内置的“让我保持登录”功能来解决这个问题。
发布于 2012-08-17 00:17:07
你会考虑一个不同的打印框架吗?那么jquery插件(例如https://github.com/ianoxley/jqueryprintpage#readme)呢?这样,您就不必允许从会话外部访问受限制区域。
如果您仍然想使用wkhtmltopdf,您可以轻松地创建一个接收url和user_id的操作,并创建一个唯一的令牌,我可能会将此令牌保存在您的DB或键值缓存中(取决于您的系统架构)。我不会提前创建唯一的令牌,我认为按需创建它更好(当您的用户要求打印时)。
您有几个选项可以在安全操作中启用打印,
1)创建自定义安全过滤器。在筛选器中,除了经过身份验证请求之外,您还必须允许包含"token“参数和url和user正确组合的请求。
2)将action修改为unsecured。如果您不希望更改安全筛选器,则必须将每个操作更改为"unsecured“,并创建一个函数来验证请求是否已通过身份验证或是否具有正确的token参数。
明智的做法是在使用一次令牌后删除每个令牌,这样就更难猜测令牌了。
此外,您可能希望创建一个定期工作进程,用于清除从未使用过的旧令牌。
发布于 2012-08-17 14:10:07
即使您已经决定了一种方法,我仍然想添加另一个选项,以帮助其他人查看此问题。
另一种替代方法可能是抓取正在查看的页面的当前源,并使用如下内容将其发布到打印机后端
$.post("/printer", document.documentElement.outerHTML);这样,您还可以以一种简单的方式对HTML进行预处理。您的后台可以首先存储HTML,然后对其进行解析,例如转换图像或删除打印时不会使用的页面部分。
https://stackoverflow.com/questions/11553458
复制相似问题