asp.net Web項目中c#讀取域使用者名稱的方法

來源:互聯網
上載者:User

asp.net Web項目中c#讀取域使用者名稱的方法

BS的內部管理系統,因對方公司採用域管理,所以希望系統根據已登入windows的域使用者自動登入。

為了這個還真費了不少精力,因我公司沒有網域服務器,所以臨時建了一個,(順便一提Windows Server 2003的網域服務器可以隨時建立,不用跟Windows 2000一樣在安裝的選擇成網域服務器,早知這樣我就不用格式化系統了,-_-|||)網上查了很多資料,再經實踐終於得出了一種方法,其實很多網上寫的方法都可以,但只是點了一下,有些地方說得不夠明白。

完成後做個總結備忘,以備後用:

(一)環境要求:IIS伺服器必須在域中,應該是在域使用者下安裝的IIS,我有一台電腦原先已裝有IIS,我直接把電腦加入域中用原有的IIS做伺服器,發現不行,而且這時不能對IIS進行管理,雖然可以使用,但在訪問時會彈出登入視窗,如果允許匿名又無法讀取到域使用者名稱了,結果就讀不出域使用者名稱了。

(二)系統設定:IIS設定為“目錄安全性”中去掉“匿名”訪問,採用“整合windows身份認證”;.net系統中web.config中

<!--
通過 <authentication> 節可以配置 ASP.NET 使用的
安全身分識別驗證模式,
以標識傳入的使用者。
-->
<authentication mode="Windows"/>

採用Windows論證方法。

(三)代碼:

User.Identity.Name; //讀取域登入使用者名稱,格式為Domainname\username (網域名稱名稱\使用者名稱稱)

網上有人說可以用System.Environment.UserName;讀取使用者名稱,筆者發現本地可以,Web服務不行,域中也不行。

以下代碼可以讀取伺服器所在域全稱:

IPHostEntry myHost = new IPHostEntry();
myHost = Dns.GetHostByName(Dns.GetHostName());
this.labHost.Text = myHost.HostName.ToString();
結果:server.domain.sobnb.com

(四)總結:域使用者訪問,所有環境必須都在域中進行,非域環境中Web伺服器應該不是讀取用戶端的Windows使用者資訊的(用戶端的Js代碼可以),應該說域中的使用者名稱讀取也是讀取了網域服務器中的資訊,而非用戶端的資訊,不知道這樣認為對不對?

其實這個功能很有用,大家如果做BS的企業管理系統,搞個這個真不錯,首先是方便,不用登入;第二是安全;第三便於管理。

 

轉自:http://blog.sobnb.com/u/92/6150.html

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.