2012-01-22 278 views
0

我有用於創建記錄的GET操作。由於該頁面有些動態,因此我不使用模型來保存數據。我會去做一些OAuth,以後再回到創建屏幕。爲了傳回數據,我使用查詢字符串重定向。我在GET操作中解析查詢字符串,然後顯示視圖。問題是,查詢字符串顯示在瀏覽器中。這顯示僞敏感數據。隱藏查詢字符串參數

由於我只使用查詢字符串傳輸數據,我想知道是否可以拋出查詢字符串,以防止它顯示在瀏覽器上。

否則,有沒有辦法去另一個行動沒有重定向?我發現,如果我直接調用「其他」操作方法,它會嘗試查找原始操作的視圖。我可以明確地將return View(viewModel)行更改爲return View("create", viewModel),但這似乎很髒。

回答

2

您應該考慮更改操作以接受POST請求。至少這會防止敏感信息出現在瀏覽器中。爲了提高安全性,您的網站應通過SSL提供服務。

您可以嘗試的另一件事是加密敏感值或整個查詢字符串。唯一的問題是,除非您需要用戶登錄,否則這也將保留在瀏覽器的歷史記錄中。

+0

我無法重定向到POST。當OAuth進程返回時,它總是使用GET。似乎沒有辦法通過POST重定向。我的意思是,我可以在內部創建一個Web請求...但這看起來太複雜了。 –

0

看起來您的操作方法嘗試做得太多。認證/授權是一個單獨的問題,不應該是操作方法的一部分。將身份驗證工作移入操作篩選器會更好。

創建一個擴展授權屬性的類並覆蓋它的OnAuthorization方法來完成授權工作。

這將您的控制器操作方法釋放爲接受POST請求。

+0

OAuth是一個網絡標準,允許用戶將訪問他們的信息授予其他網站。因此,我可以抓取用戶的Google Analytics數據或Twitter數據或Facebook數據。在我的情況下,我正在請求一個稱爲刷新令牌的東西,這樣我就可以隨時在服務器上獲取數據。用戶確實沒有對我的系統進行身份驗證 - 他們只是授權我訪問他們的數據。 –

+0

這不是與實際控制人行爲分開的問題嗎?看起來你需要這個標記才能繼續你的行動。如果授權屬性不適合您的需求,您仍然可以實施IActionFilter來執行這些操作。 – chandmk

+0

用戶已經登錄。他們不試圖訪問我的系統,我試圖訪問他們的數據。 –