2011-08-09 38 views
1

在ASP.NET Webforms的日子裏,我有一個HTTP模塊提出了401挑戰來獲取用戶名/密碼,進行身份驗證並繼續前進。我使用基於SSL的基本身份驗證來跨多種不同的瀏覽器兼容,並且使用中央數據庫存儲來檢查憑證。ASP.NET MVC 3呈現Web用戶挑戰?

隨着最新的MVC位,我正在尋找一種方法來做同樣的事情。什麼是適當的/現代的方法來做到這一點?表單認證是目前唯一的方式嗎?我真的需要向用戶展示熟悉的「登錄框」。

謝謝。

+0

找到完美的東西:http://cacheandquery.com/blog/2011/03/customizing-asp-net-mvc-basic-authentication/ – Snowy

回答

1

是形式認證這些天唯一的方式嗎?

表單身份驗證僅僅是一種身份驗證方法。您還可以使用集成Windows身份驗證,基本,摘要,OpenID或其他一些方案。但無論您使用哪種類型的身份驗證,在ASP.NET MVC中,您都會使用[Authorize]屬性修飾您的控制器/操作(需要身份驗證)。或者,如果你需要更多的控制,你可以編寫一個從標準派生的自定義認證屬性。

+0

@Snowy HTTP基本身份驗證是您通過HTTP模塊實現的。正如Darin在回答中提到的,MVC支持其他方案。 –

+0

我明白我之前做過Basic Auth。我現在想做基本身份驗證。過去,我已經將Basic模塊和摘要的HTTP模塊手動回來了,但是現在我再次需要基本(檢查數據庫身份驗證)。我沒有看到任何使用MVC進行基本身份驗證的資源。幫幫我? – Snowy

0

如果您仍然在尋找使用該模塊,您可能會注意到基於URL的授權在MVC中很難實現,因爲許多url和更改會使url訪問變得棘手。 REST風格的URL可以經常更改,並且多個URL(確定URI)可以映射到相同的位置。在Darin指出的MVC中,重要的是在控制器類或方法上使用[Authorize]。這裏的想法是,無論用於訪問當前資源的URI是什麼,您都知道權限是正確的。

當屬性被處理時,用戶角色成員資格將被檢查,如果沒有重定向到你想要的任何登錄URL(假設爲表單身份驗證),但這可以由你的身份驗證提供程序配置,以執行「任何操作」未經授權。在Windows身份驗證的情況下,您將被提示輸入登錄對話框,這將通過401挑戰完成,這就是爲什麼我說你仍然可以使用你的方法。

Windows驗證作爲一個例子都是在這裏完成:Windows Auth in MVC