如何在 asp.net mvc4 中将多个会话值设置为 null?
How to set multiple session value to null in asp.net mvc4?
我有一个管理员和用户会话。
Session["uname"]
Session["Admin"]
我的查询是在会话结束时仅管理员重定向到登录页面。但是当用户会话结束时,它不会重定向到登录页面。
请给我建议如何为管理员和用户设置会话。
这是我的代码
用户是我的控制器
登录操作
[HttpPost]
public ActionResult Login(Models.User user)
{
var query = db.Users.Where(q => q.UserName == user.UserName
&& q.Password == user.Password);
if (ModelState.IsValid)
{
// Session["uname"] = true;
if (query.Any())
{
if (query.FirstOrDefault().Role.Role1.ToLower() == "admin")
{
Session["admin"] = true;
return RedirectToAction("Index", "user");
}
else
{
Session["uname"] = true;
return RedirectToAction("Details", "user",
new { id = query.FirstOrDefault().Id });
}
}
}
return View(user);
}
这是索引操作
public ActionResult Index()
{
var users = db.Users.ToList();
if (Session["uname"] != null || Session["Admin"]==null)
{
return RedirectToAction("Login", "User" );
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("About", "Home");
}
}
提前致谢。
用户会话结束后显示如下内容
Register | Sign In
Details
UserName
User
Password
User
Role1
User
Edit | Back to List
您可以设置一个会话变量 Session["userType"]
,其值可以是 "Admin" 或 "User" 以确定哪种类型的用户正在尝试访问您的 Index 操作方法。
查看 [Authorize] 属性来控制您的访问。
My Query is When Session is Over Only Admin Redirect to Login Page.But when User session is over Then It's Not Redirected to Login Page
在那种情况下你需要 AND 而不是 OR:
if (Session["uname"] != null && Session["Admin"]==null)
{
return RedirectToAction("Login", "User" );
}
或:
if (Session["uname"] != null)
{
return RedirectToAction("About", "Home");
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("Login", "User" );
}
我得到了一个小编辑的解决方案。
索引操作
Public ActionResult Index()
{
var users = db.Users.ToList();
var session = Session["uname"];
if (Session["admin"] == null)
{
return RedirectToAction("Login", "User");
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("About", "Home");
}
}
当我重定向到详细操作时,我在详细操作中编写了会话空代码。
public ActionResult Details(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
if (Session["uname"] == null)
{
return RedirectToAction("About", "Home");
}
return View(user);
}
并在 _Layout.cshtml 文件中进行更改
@if (Session["uname"] == null && Session["admin"]==null)
{
@Html.ActionLink("Register", "create", "User")
<span>| </span>
<strong>@Html.Encode(User.Identity.Name)</strong>
@Html.ActionLink("Sign In", "Login", "User")
}
else
{
@Html.ActionLink("Sign Out", "Logout", "User")
}
我有一个管理员和用户会话。
Session["uname"]
Session["Admin"]
我的查询是在会话结束时仅管理员重定向到登录页面。但是当用户会话结束时,它不会重定向到登录页面。
请给我建议如何为管理员和用户设置会话。
这是我的代码
用户是我的控制器
登录操作
[HttpPost]
public ActionResult Login(Models.User user)
{
var query = db.Users.Where(q => q.UserName == user.UserName
&& q.Password == user.Password);
if (ModelState.IsValid)
{
// Session["uname"] = true;
if (query.Any())
{
if (query.FirstOrDefault().Role.Role1.ToLower() == "admin")
{
Session["admin"] = true;
return RedirectToAction("Index", "user");
}
else
{
Session["uname"] = true;
return RedirectToAction("Details", "user",
new { id = query.FirstOrDefault().Id });
}
}
}
return View(user);
}
这是索引操作
public ActionResult Index()
{
var users = db.Users.ToList();
if (Session["uname"] != null || Session["Admin"]==null)
{
return RedirectToAction("Login", "User" );
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("About", "Home");
}
}
提前致谢。
用户会话结束后显示如下内容
Register | Sign In
Details
UserName
User
Password
User
Role1
User
Edit | Back to List
您可以设置一个会话变量 Session["userType"]
,其值可以是 "Admin" 或 "User" 以确定哪种类型的用户正在尝试访问您的 Index 操作方法。
查看 [Authorize] 属性来控制您的访问。
My Query is When Session is Over Only Admin Redirect to Login Page.But when User session is over Then It's Not Redirected to Login Page
在那种情况下你需要 AND 而不是 OR:
if (Session["uname"] != null && Session["Admin"]==null)
{
return RedirectToAction("Login", "User" );
}
或:
if (Session["uname"] != null)
{
return RedirectToAction("About", "Home");
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("Login", "User" );
}
我得到了一个小编辑的解决方案。
索引操作
Public ActionResult Index()
{
var users = db.Users.ToList();
var session = Session["uname"];
if (Session["admin"] == null)
{
return RedirectToAction("Login", "User");
}
else if (Session["admin"] != null)
{
return View(users.ToList());
}
else
{
return RedirectToAction("About", "Home");
}
}
当我重定向到详细操作时,我在详细操作中编写了会话空代码。
public ActionResult Details(int id = 0)
{
User user = db.Users.Find(id);
if (user == null)
{
return HttpNotFound();
}
if (Session["uname"] == null)
{
return RedirectToAction("About", "Home");
}
return View(user);
}
并在 _Layout.cshtml 文件中进行更改
@if (Session["uname"] == null && Session["admin"]==null)
{
@Html.ActionLink("Register", "create", "User")
<span>| </span>
<strong>@Html.Encode(User.Identity.Name)</strong>
@Html.ActionLink("Sign In", "Login", "User")
}
else
{
@Html.ActionLink("Sign Out", "Logout", "User")
}