无法在MVC中登录用户!

时间:2010-01-07 04:34:13

标签: asp.net-mvc forms-authentication

我一直在摸不着头脑,但仍然无法得到它。 我只是想在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是aspnet会话cookie。

任何想法都会非常感激!

1 个答案:

答案 0 :(得分:1)

你做得太多了。它需要一个函数调用来记录某人。这是来自新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。你需要那个。