首页 文章

wkhtmltopdf的sfGuard令牌登录

提问于
浏览
2

wkhtmltopdf允许使用webkit浏览器制作浏览器视图的屏幕截图 .

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

我怎样才能安全地促进这一点 . 我想在每个屏幕上为打印按钮创建一个一次性令牌,允许wkhtmltopdf在不使用用户密码的情况下登录 .

有关如何构建此建议的任何建议?

3 回答

  • 1

    我们将得出结论,使用内置的“让我登录”功能来解决这个问题 .

  • 0

    你会考虑不同的印刷框架吗?那jquery插件(例如https://github.com/ianoxley/jqueryprintpage#readme)呢?这样,您就不必允许从会话外部访问受限区域 .

    如果您仍想使用wkhtmltopdf,您可以轻松创建一个接收URL和user_id并创建唯一令牌的操作,我可能会将此令牌保存在您的数据库或键值缓存中(取决于您的系统架构) . 我不会提前创建唯一令牌,我认为最好按需创建它(当您的用户要求打印时) .

    您有几个选项可以在安全的操作中启用打印,

    1)创建自定义安全筛选器 . 在过滤器中,除了经过身份验证的请求之外,您还必须允许包含“token”参数的请求以及url和user的正确组合

    2)将操作更改为不安全 . 如果您不希望更改安全筛选器,则必须将每个操作更改为“不安全”,并创建一个函数来验证请求是否已通过身份验证,或者是否具有正确的令牌参数 .

    在您使用它之后删除每个令牌以使其更难以猜测令牌将是明智的 .

    此外,您可能希望创建一个定期工作程序来清除从未使用过的旧令牌 .

  • 0

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

    另一种替代路线可能是获取正在查看的页面的当前源,并使用类似的东西将其发布到打印机后端

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

    这样,您还可以轻松地预处理HTML . 您的支持可以先存储HTML,然后将其解析为例如转换图像,或者删除打印时不会使用的页面的某些部分 .

相关问题