我创建了一个 ASP.NET MVC 应用程序,它在用户登录后将其用户信息保存在会话中。没什么好看的,只是一个简单的应用程序。
最近我注意到这种奇怪的行为,会话只是不会在重建后的第一次运行时保存。而且是一致的。
这是一个例子:
- 重建解决方案
- 打开登录页面,输入凭证
- 登录验证,重定向到仪表板,但仪表板显示未找到会话
- 返回登录页面,输入相同的凭证
- 登录验证,重定向到仪表板没有问题
在完美的情况下,第 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();
}