1

我创建了一个 ASP.NET MVC 应用程序,它在用户登录后将其用户信息保存在会话中。没什么好看的,只是一个简单的应用程序。

最近我注意到这种奇怪的行为,会话只是不会在重建后的第一次运行时保存。而且是一致的。

这是一个例子:

  1. 重建解决方案
  2. 打开登录页面,输入凭证
  3. 登录验证,重定向到仪表板,但仪表板显示未找到会话
  4. 返回登录页面,输入相同的凭证
  5. 登录验证,重定向到仪表板没有问题

在完美的情况下,第 3 项中不应该有任何错误,因为在验证时,会话被设置为标记用户登录的应用程序。

我想知道我是否错过了这里的某些东西,或者这就是 Session 的工作方式。我希望有人能给我一些启示。

[HttpGet]
public ActionResult Index(){
   HttpContext.Session.Remove("UserIn");
   return View();
}
[HttpPost]
public ActionResult Index(string username, string password){
  bool validUser = true;
  if(validUser){
    HttpContext.Session["UserIn"] = username;
  }
  return RedirectToAction("Dashboard");
}

[HttpGet]
public ActionResult Dashboard(){
   if(HttpContext.Session["UserIn"] == null){
     throw new Exception("No session found");
   }
   return View();
}
4

1 回答 1

-2

我强烈建议您使用表单身份验证并将用户名存储在主体对象中。

检查这篇文章http://mikehadlow.blogspot.com.ar/2008/03/forms-authentication-with-mvc-framework.html

于 2013-01-04T15:35:50.307 回答