我正在設計一個使用ASP.net MVC框架的Web應用程序。我想使用Windows身份驗證並使用角色管理器SQLRoleProvider執行角色檢查。如何通過窗口身份驗證獲取電子郵件地址
如何確定當前登錄用戶的電子郵件地址?這甚至有可能嗎?
該應用程序將部署在多域Intranet中,如果這很重要(我假設它)。
感謝您的幫助!
我正在設計一個使用ASP.net MVC框架的Web應用程序。我想使用Windows身份驗證並使用角色管理器SQLRoleProvider執行角色檢查。如何通過窗口身份驗證獲取電子郵件地址
如何確定當前登錄用戶的電子郵件地址?這甚至有可能嗎?
該應用程序將部署在多域Intranet中,如果這很重要(我假設它)。
感謝您的幫助!
您可以在Active Directory中查找用戶的屬性。下面是說明如何做到這一點使用的System.DirectoryServices和C#一個偉大的文章:
http://www.codeproject.com/Articles/6778/How-to-get-User-Data-from-the-Active-Directory
的asp.net會員服務數據庫只是一個數據庫,它可以直接對執行查詢。但我不認爲默認會員提供商有辦法獲得電子郵件地址。
下面是一些代碼示例:
DirectorySearcher searcher = new DirectorySearcher();
searcher.Filter = string.Format("sAMAccountName={0}", _name);
SearchResult user = searcher.FindOne();
string emailAddr = user.Properties["mail"][0].ToString();
在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 "";
}
}
我認爲用戶名不等於電子郵件帳戶,即使您刪除域 – MichaelMao 2016-08-30 03:03:22
**此鏈接不再有效。通常建議不要因爲原因而使用鏈接。請發佈示例代碼。 (@Raiden Flyboy) – 2015-04-29 13:54:02
鏈接現在更新 – TimS 2015-04-30 08:23:08