2014-06-09 236 views
2

我正在開發使用ASP.NET MVC 4的Intranet應用程序。我正在使用自定義表單身份驗證。當用戶訪問應用程序時,我想獲取用戶的Windows登錄用戶名並在我的數據庫中檢查該用戶名。但我不知道如何使用該用戶名。我試圖把它用下面的代碼:如何獲取當前Windows登錄用戶的用戶名?

string CurLoggedInUsername = Environment.UserName; 

這讓我的用戶名,當我從Visual Studio中運行,但是當我主持我的應用程序在IIS它給出了一個奇怪的值。我也試過用

string CurLoggedInUsername = httpcontext.current.user.identity.name; 

但沒用。有沒有辦法在驗證之前獲取用戶的Windows登錄用戶名?

+0

[在ASP.NET MVC3 Intranet應用程序中獲取已登錄用戶名]的可能重複(http://stackoverflow.com/questions/6786380/getting-the-logged-in-username-in-asp-net-mvc3 -intranet-application) –

+2

爲什麼不使用windows auth? – Luthervd

+0

我已經嘗試使用Windows身份驗證,但它顯示提示詢問我不想要的用戶名和密碼。我想要當用戶訪問我的登錄頁面時,我得到他的Windows帳戶用戶名,並檢查它對我的數據庫。如果它存在並且對於自動登錄標記爲真,則重定向到儀表板,否則如果用於自動登錄的假標誌然後顯示具有用戶名填充的登錄頁面並且允許用戶輸入密碼。 – CodeWarrior

回答

0

聽起來你可能需要考慮混合模式認證。即Windows和表單身份驗證。事情是他們不一定能很好地一起玩。

以下文章介紹了該問題以及如何解決該問題。本文的重點主要圍繞如何在IIS 7集成模式下401挑戰(Windows身份驗證)和302重定向(表單身份驗證)不兼容以及如何使用幾種表單和HTTP管道攔截來獲取用戶詳細信息。我成功地將這種方法用於大型公共部門客戶端(儘管是webforms應用程序)。我相信這些原則是一樣的。

IIS 7.0 Two-Level Authentication with Forms Authentication and Windows Authentication

我忘了在代碼示例添加到查找Windows身份驗證憑據正確的地方介紹。已經有一段時間了,所以我不記得它在我頭頂。

相關問題