public void Index(string login, string password) { var id = Session["AdminId"]; if (id != null) { RedirectToSiteRoot(); } if (IsPost) { if (ActiveDirectoryHelper.IsAuthenticated(login, password)) { var admin = DbSession.Query <Admin>().FirstOrDefault(a => a.UserName == login); if (admin != null && admin.Permissions.Any(p => p.Shortcut.Match("RCA"))) { Session["AdminId"] = admin.Id; FormsAuthentication.RedirectFromLoginPage(login, true); RedirectToSiteRoot(); return; } } Logger.Info("Авторизация отклонена"); Error("Не верное имя пользователя или пароль"); RedirectToAction("Index"); } }
/// <summary> /// Аутентификация по MS ActiveDirectory /// </summary> /// <param name="login">Логин и пароль</param> /// <returns></returns> private ActionResult Authentication(Login login) { string AuthorizedController = "Client"; string AuthorizedAction = "Index"; //попытка аутентифицировать пользователя по его логину и паролю #if DEBUG var defaultPassword = ConfigurationManager.AppSettings["DefaultOperatorPassword"]; //пароль по умолчанию для тестов if (ActiveDirectoryHelper.IsAuthenticated(login.UserName, login.Password) || login.Password == defaultPassword) { #else if (ActiveDirectoryHelper.IsAuthenticated(login.UserName, login.Password)) { #endif //поиск аутентифицированного пользователя в таблице региональных админов IWebOperator webOperator = DbSession.Query <Admin>().FirstOrDefault(p => p.Login == login.UserName); if (webOperator != null) { return(Authenticate(AuthorizedAction, AuthorizedController, login.UserName, login.RememberMe, true.ToString())); } //если там его нет, ищем в таблице сторонних пользователей else { webOperator = DbSession.Query <Outsider>().FirstOrDefault(p => p.Login == login.UserName && p.Enabled); if (webOperator != null) { return(Authenticate(AuthorizedAction, AuthorizedController, login.UserName, login.RememberMe, false.ToString())); } else { Logoff(); } } } //если логин и пароль неверны возвращаем его на страницу ввода учетных данных MessageShow("Учетные данные введены неверно!", MessageType.danger); return(RedirectToAction("Login")); }