2012-07-19 46 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,然後將其解析爲例如轉換圖像,或者可能刪除打印時不會使用的頁面某些部分。