3

我目前有一個由外部客戶訪問的內部網站點。因此,我使用Forms Authentication進行設置。然而,作爲(我的老闆)的權力希望我們的所有域用戶不必輸入他們的用戶名和密碼來訪問該網站。MVC3混合形式和Windows身份驗證

我已經做了一些或閱讀,一切似乎指向設置一個WinLogin.aspx頁面,您改變使用WindowAuthenthication,然後從那裏重定向。

我有一個問題,因爲我不喜歡在我的mvc應用程序中放置一個aspx表單的想法。

任何人都可以告訴我如何使用嚴格的MVC控制器/動作設置沒有第二個應用程序混合認證?

注意:在IIS 7盒子上運行MVC 3。

回答

1

表單身份驗證與您的文件的URL或物理結構無關。重要的是,URL最終應該映射到服務器上的物理(或虛擬)資源,並進行處理並返回給用戶。

因此,對於每個來電(每個HTTP請求,甚至是CSS和JavaScript文件),都必須查看當前用戶是否有足夠的權限訪問它。如果不是,那麼您可能會將他重定向到登錄頁面。

如果你願意,你可以有一個像/user/windowslogin這樣的URL,其中user是控制器的名稱,windowslogin是你的操作方法的名稱。然後,您可以在windowslogin操作上創建一個自定義驗證屬性(類似[WindowsAuthentication]),並在該屬性(本質上是一個MVC過濾器)中,可以查看當前請求是否來自您的域中,如果是,則說到Active Directory進行身份驗證或類似的事情,如果身份驗證成功,請使用FormsAuthentication類和故事的其餘部分創建身份驗證Cookie。

但是,我不認爲這會是一件容易的事。其他人可能會引入更好的解