我一直在摸不着头脑,但仍然无法得到它。 我只是想在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。
任何想法都会非常感激!
答案 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
。你需要那个。