2010-09-02 41 views
1

我知道MVC中的默認路由包含一個id參數,它常常映射到存儲在數據庫中的實體的身份。現在,這通常是可以的,但是當你不想讓某人操縱它時呢?坦率地說,在很多商業應用程序中,這是非常普遍的。例如,您不希望某人出於顯而易見的原因在URL中更改帳號(不是最好的例子,但您明白了)。因此,您需要根據每個請求驗證登錄用戶的帳號。顯然,這不是一個現實的解決方案,在webforms中很多人會在會話中存儲這樣的內容。我正在嘗試在MVC中很少依賴會話,但除此之外,我只是上了舊學校並使用隱藏的字段?ASP.NET MVC在URL中使用ID

其他人如何解決這個問題?

+0

我認爲'Authorize'屬性會對你的情況有所幫助。如果您不熟悉該屬性,請參閱NerdDinner示例:http://nerddinnerbook.s3.amazonaws.com/Part9.htm – 2010-09-02 14:14:38

回答

0

這是在我工作的一個地方處理的一種方式是檢查請求對象中的引用。如果推薦人在當前網域中是空白的,請不要向他們展示網頁。

Request.UrlReferrer 

它實際上工作得很好。

1

實際上,對於良好的安全性,無論如何都必須驗證每個請求的已驗證用戶權限。可能您可以擴展Authorize屬性以更好地滿足您的需求。 隱藏字段只比url參數好一點,因爲它們可以通過使用IE開發工具或Firebug輕鬆更改。

+0

我同意100%。看到這個相關的問題和答案:http://stackoverflow.com/questions/1723323/protecting-ids-on-a-url-in-asp-net-mvc – Michael 2011-03-02 16:25:55