jay gandhi Ответов: 1

Hii, когда я использовал autehntication на основе форм, используя в приложении MVC в то время после перенаправления страницы входа на страницу "account/login", что я могу сделать для решения


[Authorize]
        public ActionResult Home()
        {

            return View();
        }
        public ActionResult Login()
        {
            return View();
        }
       
        [HttpPost]
        
        public ActionResult Login(User_info ui,string returnUrl)
        {
            if (ModelState.IsValid)
            {
                using (CRM_DBEntities crm = new CRM_DBEntities())
                {
                    var details = crm.User_info.Where(a => a.Username.Equals(ui.Username) && a.Password.Equals(ui.Password)).FirstOrDefault();

                    if (details != null)
                    {
                        FormsAuthentication.SetAuthCookie(details.Username, false);
                        if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
                    && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
                        {
                            return Redirect(returnUrl);
                        }
                        else
                        {
                            return RedirectToAction("Home", "crm");
                        }
                        //Session["Username"] = details.Email.ToString();
                        //return RedirectToAction("Home","crm");

                    }
                    else
                    {
                        ModelState.AddModelError("", "The user name or password         provided is incorrect.");
                        return View();
                    }

                }
            }


            return View();
        }
        [Authorize]
        public ActionResult Logout()
        {

            FormsAuthentication.SignOut();
            return RedirectToAction("Index","Home");
        }


Что я уже пробовал:

<system.web>
    <authentication mode="Forms">
      <forms loginUrl="~/crm/Login" defaultUrl="~/" timeout="20" slidingExpiration="true"/>
    </authentication>

F-ES Sitecore

Вам нужно реализовать функцию "Запомнить меня" при входе в систему, у меня нет кода под рукой, но я считаю, что это свойство вы добавляете к методу входа человека в систему, чтобы узнать, хотите ли вы, чтобы логин был сохранен или нет. Это должно держать их в системе до тех пор, пока они не выйдут.

jay gandhi

я также пробовал Формаутентификацию.SetAuthCookie (подробнее.Имя пользователя, правда); но все равно возникла та же проблема ... что еще я могу сделать

Richard Deeming

Вы храните пароли в виде обычного текста. Не. Вы должны всегда хранить только соленый хэш пароля, используя уникальную соль для каждой записи.

Безопасная Аутентификация Паролем Объясняется Просто[^]
Соленое хеширование паролей - все правильно[^]

Если вы использовали встроенный Идентичность[^] фреймворк, вместо того чтобы пытаться свернуть свой собственный, он бы позаботился о таких вещах за вас.

1 Ответов

Рейтинг:
2

F-ES Sitecore

Изменить

FormsAuthentication.SetAuthCookie(details.Username, false);


к

FormsAuthentication.SetAuthCookie(details.Username, true);