2012-07-19 50 views
2

wkhtmltopdf允许使用webkit浏览器制作浏览器视图的屏幕截图。用于wkhtmltopdf的sfGuard令牌登录

我有一个需要登录的Symfony 1.4应用程序,我希望使用wkhtmltopdf创建一个“打印此页”功能。

如何安全地促进这一点。我正在考虑在每个屏幕上为打印按钮创建一次性标记,以便wkhtmltopdf在不使用用户密码的情况下登录。

关于如何构建这个的任何建议?

回答

1

We'vbe得出结论,使用内置的“保持登录状态”功能解决此问题。

+0

我面临着完全相同的问题!你是如何通过使用“保持登录状态”来解决这个问题的?我尝试过,但它仍然打印“认证页面”pdf而不是当前页面。 – JavierIEH 2012-10-19 20:23:29

0

你会考虑一个不同的打印框架吗? jquery插件怎么样(例如https://github.com/ianoxley/jqueryprintpage#readme)? 这样你就不必在会话之外允许访问限制区域。

如果你仍然想使用wkhtmltopdf,你可以很容易地创建一个动作,接收一个url和一个user_id并创建一个唯一的标记,我可以将这个标记保存在你的数据库或键值缓存中(取决于你的系统架构)。我不会提前创建独特的令牌,我认为它更好地按需创建(当用户要求打印时)。

你有两个选择,以便能够在安全的行动印刷,

1)创建自定义的安全过滤器。在过滤器中,除了已验证的请求之外,您还必须允许包含“令牌”参数的请求以及url和用户的合适组合。012)如果您不想更改安全过滤器,则必须将每个操作都更改为“不安全”,并创建一个函数来验证请求是否已通过身份验证,或者是否具有正确的令牌参数。

在您使用一次令牌之后删除每个令牌会更加明智,以至于难以猜出令牌。

另外,您可能希望创建一个定期工作程序,该工作程序清除从未使用的旧标记。

0

即使您已经决定使用某种方法,我仍然希望添加一个备选选项,以帮助其他人查看此问题。

另一个替代路线可能会抓住正在浏览的网页的电流源和使用像

$.post("/printer", document.documentElement.outerHTML); 

东西这种方式,您还可以预处理HTML容易的方式张贴到您的打印机后端。您的支持人员可以首先存储HTML,然后将其解析为例如转换图像,或者可能删除打印时不会使用的页面某些部分。