Невозможно войти в систему в MVC! - PullRequest
1 голос
/ 07 января 2010

Я почесал голову над этим некоторое время, но все еще не могу понять. Я пытаюсь просто войти в систему пользователя в приложении MVC2.

Я перепробовал все, что я знаю, чтобы попробовать, но все еще не могу понять, что я делаю неправильно. Вот несколько вещей, которые я попробовал:

FormsAuthentication.SetAuthCookie( emailAddress, rememberMe );  
var cookie = FormsAuthentication.GetAuthCookie( emailAddress, rememberMe );  
HttpContext.Response.Cookies.Add( cookie );  
FormsAuthenticationTicket ticket = new FormsAuthenticationTicket( emailAddress, rememberMe, 15 );  
FormsIdentity identity = new FormsIdentity( ticket );  
GenericPrincipal principal = new GenericPrincipal(identity, new string[0]);  
HttpContext.User = principal;  

Я не уверен, что все это правильно (так как это не работает). После настройки HttpContext.User = principal затем Request.IsAuthenticated == true. Тем не менее, в Global.asax у меня есть это:

HttpCookie authenCookie = Context.Request.Cookies.Get( 
    FormsAuthentication.FormsCookieName );

Единственный доступный файл cookie - это файл cookie сеанса aspnet.

Любые идеи очень приветствуются!

1 Ответ

1 голос
/ 07 января 2010

Ты слишком много работаешь. Для входа в систему требуется один вызов функции. Вот стандартный код из нового приложения MVC 2:

    private bool ValidateLogOn(string userName, string password)
    {
        if (String.IsNullOrEmpty(userName))
        {
            ModelState.AddModelError("username", "You must specify a username.");
        }
        if (String.IsNullOrEmpty(password))
        {
            ModelState.AddModelError("password", "You must specify a password.");
        }
        if (!MembershipService.ValidateUser(userName, password)) // this is the login
        {
            ModelState.AddModelError("_FORM", "The username or password provided is incorrect.");
        }

        return ModelState.IsValid;
    }

Обратите внимание на закомментированную строку. Это все, что вам нужно для входа в систему. Я отмечаю, что вы не звоните ValidateUser в своем коде в вопросе. Тебе это нужно.

...