2014-11-06 60 views
0

昨天嘗試了googoling整個下午,但也許我無法搜索到罰款,我還沒有找到解決方案!MVC4:從窗體切換到窗口驗證

我有一個MVC4應用程序在表單身份驗證中運行良好,但現在公司的請求是在Windows身份驗證中切換身份驗證。

我試圖簡單地更改網絡配置並將其設置爲Windows身份驗證,但是當我開始調試時,用戶是空的(User.Identity.Name =「」)。

因此,我試圖通過VS模板創建一個新的Intranet Web應用程序,以查看它是否正常工作,它確實如此。我比較了web配置,沒有遺漏任何東西,但我無法理解應用程序如何獲取用戶,因爲在這裏我發現User.Identity.Name數據是正確的。

所以我錯過了一些東西,或者我只是需要添加一些代碼? 感謝您的幫助。

-EDIT:我嘗試進行會話啓動檢查,但User.Identity仍然是空的並且未通過身份驗證。不明白爲什麼!

回答

0

步驟1此配置:打開Web.config文件並進行以下修改:

<!— 
<authentication mode="Forms"> 
    <forms loginUrl="~/Account/Login" timeout="2880" /> 
</authentication> 
--> 

<authentication mode="Windows" /> 

步驟2:默認情況下,MVC Apps使用表單身份驗證和簡單成員資格,因此您需要將其設爲'假'才能運行Windows身份驗證。

<appSettings> 
    <add key="webpages:Version" value="2.0.0.0" /> 
    <add key="webpages:Enabled" value="false" /> 
    <add key="PreserveLoginUrl" value="true" /> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 

    <add key="autoFormsAuthentication" value="false" /> 
    <add key="enableSimpleMembership" value="false"/> 

</appSettings> 

步驟3:在解決方案資源管理,然後在屬性瀏覽器中選擇項目名稱,單擊要啓用Windows身份驗證。

步驟4:在屬性Explorer如果你希望你的開發服務器上認證的用戶完整的網站,你可以禁用匿名身份驗證。

Reference

+0

將「enableSimpleMembership」改爲False訣竅!謝謝! – skini82 2014-11-06 10:17:39

0

請驗證Windows身份驗證

<authentication mode="Windows" /> 
    <authorization> 
     <allow users="yourdomain\someotheruser" /> 
     <deny users="*" /> 
    </authorization> 
+0

如果我把這個在web.config中問我的用戶名和密碼。我嘗試了很多次,但我得到了未經授權的頁面。所以我認爲我的網站不會讓用戶。注意:在MVC示例中,APP IE不會要求我輸入USER/Password,但我的用戶是自動識別的。 – skini82 2014-11-06 09:29:11

+0

是的,你必須輸入正確的域名/用戶名和密碼(你用來登錄到你的機器的那個)。對於IE,它具有默認設置「僅在Intranet區域自動登錄」。要驗證/更改該設置,請轉到IE>工具> Internet選項>安全選項卡>自定義級別>將其滾動到最後並查找用戶身份驗證選項。 – 2014-11-06 12:11:11