Как получить адрес электронной почты с оконной аутентификацией - PullRequest
3 голосов
/ 28 октября 2009

Я разрабатываю веб-приложение, используя ASP.net MVC Framework. Я хотел бы использовать проверку подлинности Windows и выполнять проверку ролей с помощью диспетчера ролей SQLRoleProvider.

Как определить адрес электронной почты текущего пользователя? Это вообще возможно?

Приложение будет развернуто в многодоменной внутренней сети, если это имеет значение (что, я полагаю, имеет значение).

Спасибо за любую помощь!

Ответы [ 4 ]

7 голосов
/ 28 октября 2009

Вот пример кода:

DirectorySearcher searcher = new DirectorySearcher();    
searcher.Filter = string.Format("sAMAccountName={0}", _name);    
SearchResult user = searcher.FindOne();    
string emailAddr = user.Properties["mail"][0].ToString();
2 голосов
/ 28 октября 2009

Вы можете посмотреть свойства пользователя в Active Directory. Вот отличная статья, которая объясняет, как это сделать с помощью System.DirectoryServices и C #:

http://www.codeproject.com/Articles/6778/How-to-get-User-Data-from-the-Active-Directory

0 голосов
/ 18 августа 2016

В приложении 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.Security.Principal и с использованием System.DirectoryServices .

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 голосов
/ 28 октября 2009

База данных службы членства asp.net - это просто база данных, к которой вы можете выполнить запрос напрямую. Однако я не думаю, что поставщик членства по умолчанию может получить адрес электронной почты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...