gpt4 book ai didi

c# - 如何注销 session MVC Razor visual studio

转载 作者:太空狗 更新时间:2023-10-29 22:13:45 24 4
gpt4 key购买 nike

我正在尝试从 MVC Razor 中的 session 注销,这是我目前在 MainController 中拥有的内容:

[HttpPost]
public ActionResult Login(Users user)
{
if (ModelState.IsValid)
{
if (ValidateUser(user.Email, user.Password))
{

FormsAuthentication.SetAuthCookie(user.Email, false);
return RedirectToAction("Index", "Members");
}
else
{
ModelState.AddModelError("", "");
}
}
return View();
}

private bool ValidateUser(string Email, string Password)
{

bool isValid = false;

using (var db = new ShareRideDBEntities())
{
var User = db.tblProfiles.FirstOrDefault(u => u.PROF_Email == Email);
var ut = db.tblProfilesTypes.FirstOrDefault(t => t.TPE_ID == User.PROF_UserType);

if (User != null)
{
if (User.PROF_Password == Password)
{
Session["UserID"] = User.PROF_UserID;
Session["Name"] = User.PROF_FirstName;
Session["Email"] = User.PROF_Email;
Session["FullName"] = User.PROF_FirstName + " " + User.PROF_LastName;

isValid = true;
}
}

}

return isValid;
}

有了这个,我可以登录用户并将其重新编辑到他的 UserCP 或用户控制面板。

我有这样的设置,如果用户未登录,他们将无法使用我的 MembersController 中的此代码访问成员(member)区:

public ActionResult UserCP()
{
if (Session["UserID"] == null)
{
return RedirectToAction("Index", "Main");
}
else
{
return View();
}

}

public ActionResult LogOut()
{
FormsAuthentication.SignOut();
return RedirectToAction("index", "main");
}

如果他/她还没有登录,它会将用户重定向回主索引页面,但是当我测试注销按钮时,它会正常重定向我,但我仍然能够返回到用户控制面板我不希望它发生。

我当然加了

using System.Web.Security;

使用 FormAuthentication.SignOut();

如果有人能解释一下,在此先感谢。

最佳答案

FormsAuthentication.SignOut(); 之后你需要调用 Session.Abandon()这将清除当前 session 并在下一个请求时重新创建新 session

public ActionResult LogOut()
{
FormsAuthentication.SignOut();
Session.Abandon(); // it will clear the session at the end of request
return RedirectToAction("index", "main");
}

关于c# - 如何注销 session MVC Razor visual studio,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24537040/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com