我的应用程序允许我在注销后创建、编辑和删除用户。尽管我在用户通过身份验证后不久就创建了会话变量,并且在注销时也将其删除。但是在 mvc4 中,我无法弄清楚在哪里检查这些会话变量条件(是否为 null)。就像在 asp.net(c#)page_load 中我们可以实现 if 条件的页面一样。
在整个互联网上,人们都在讨论使用 java 脚本禁用浏览器后退按钮以及删除 cookie,但在我的情况下,一旦用户注销,如果他使用浏览器后退按钮查看内容,如果单击它应该重定向到登录页面。
有人可以帮助我找到正确的位置来检查会话变量是否为 null 的条件。是视图吗?是 share_layout 视图吗?或者它是控制器?或者其他我没有提示的东西,请帮忙。
这是我的会话控制器代码
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult LogIn(User user)
{
try
{
if (ModelState.IsValid)
{
var userdb = db.User.Include("Role").Single(c => c.userName == user.userName);
if (userdb.passWord == user.passWord)
{
Session["UserId"] = userdb.userId;
Session["UserName"] = userdb.userName;
Session["RoleName"] = userdb.Role.roleName;
if (userdb.Role.roleName == "Employee")
{
return RedirectToAction("Index", "Employee");
}
else if (userdb.Role.roleName == "Customer")
{
return RedirectToAction("Index", "CustomerSite");
}
else if (userdb.Role.roleName == "Admin")
{
return RedirectToAction("Index", "Admin");
}
}
else
{
ViewBag.errorMsg = "We cannot authenticate you please use the right username or password";
return View();
}
}
return View();
}
对于注销
public ActionResult Logout()
{
Session.Remove("UserId");
Session.Remove("UserName");
Session.Remove("RoleName");
return RedirectToAction("LogIn", "Session");
}