2009-10-28 59 views
2

我正在設計一個使用ASP.net MVC框架的Web應用程序。我想使用Windows身份驗證並使用角色管理器SQLRoleProvider執行角色檢查。如何通過窗口身份驗證獲取電子郵件地址

如何確定當前登錄用戶的電子郵件地址?這甚至有可能嗎?

該應用程序將部署在多域Intranet中,如果這很重要(我假設它)。

感謝您的幫助!

回答

0

的asp.net會員服務數據庫只是一個數據庫,它可以直接對執行查詢。但我不認爲默認會員提供商有辦法獲得電子郵件地址。

5

下面是一些代碼示例:

DirectorySearcher searcher = new DirectorySearcher();  
searcher.Filter = string.Format("sAMAccountName={0}", _name);  
SearchResult user = searcher.FindOne();  
string emailAddr = user.Properties["mail"][0].ToString(); 
0

在MVC5應用給的作用下

public ActionResult Index() 
     { 
      string name = System.Security.Principal.WindowsIdentity.GetCurrent().Name; 
      ViewBag.Name = name; 
      ViewBag.Email = uEmail(User.Identity.Name.Replace(@"YOURDOMAIN\", "")); 
      return View(); 
     } 

變化給出的YOURDOMAIN你的域名。並給出如下給出的uEmail功能。還要添加引用以使用System.DirectoryServices使用System.Security.Principal

private string uEmail(string uid) 
     { 
      DirectorySearcher dirSearcher = new DirectorySearcher(); 
      DirectoryEntry entry = new DirectoryEntry(dirSearcher.SearchRoot.Path); 
      dirSearcher.Filter = "(&(objectClass=user)(objectcategory=person)(mail=" + uid + "*))"; 

      SearchResult srEmail = dirSearcher.FindOne(); 

      string propName = "mail"; 
      ResultPropertyValueCollection valColl = srEmail.Properties[propName]; 
      try 
      { 
       return valColl[0].ToString(); 
      } 
      catch 
      { 
       return ""; 
      } 

     } 
+0

我認爲用戶名不等於電子郵件帳戶,即使您刪除域 – MichaelMao 2016-08-30 03:03:22

相關問題