注销后返回帐户会话

时间:2018-01-29 13:53:36

标签: c# asp.net

在ASP.NET中,我在每个页面都有一个小帐户。在每个页面的页面加载中,我检查名为username的会话是否为空。如果是的话,我把登录放在div中。否则我在那里写下他们的名字并按下按钮退出。注销将删除会话并加载登录div而不是当前div。一切都很好,但是如果我退出然后按后退按钮,则会返回带有帐户名称的div。我应该怎么解决? 我的问题的一个例子。

ASPX:

<%=accountDiv %>

aspx.cs:

if(Session["username"] != null){
 accountDiv = "<div>" + Session["username"].ToString() + 
"<form method='post' onsubmit='return true'><input type='submit' name='logout'></form></div>"
}
else{
 accountDiv = "<div>" +
"<form method='post' onsubmit='return true'>" +
"<input type='text' name='username'>" +
"<input type='submit' name='login'>" +
"</form></div>";
}
if(Request.Form["login"]!=null){
Session["username"] = Request.Form["username"];
accountDiv = (code that builds the div with the name as before)
}
if(Request.Form["logout"]!=null){
Session.RemoveAll();
accountDiv = (code that builds the div with the login as before)
}

2 个答案:

答案 0 :(得分:0)

这是代码,ASP NET有很多buildin类和帮助器,下面是一个使用Razor View的例子。

@if (Request.IsAuthenticated)
{

  <strong>@User.Identity.Name</strong>
  <!-- Log Off Link -->

}else{
 <strong>Please log in</strong>
}

答案 1 :(得分:0)

你可能不会使用这样的表格。您应该有一个登录页面,其中包含一个表单,该表单在提交时会转到记录用户的操作,然后重定向到主页面,该主页面将在角落中显示您想要的用户名称页面,并带有注销链接。

然后,注销链接应转到将用户注销并重定向到“登录”页面的操作。您应该拥有检查未登录用户的代码(这会处理后退功能),然后它们会相应地重定向。

public ActionResult Logout()
{
    if (UserState.IsLoggedIn)
    {
        // Log the user out
    }
    return RedirectToAction("Login");
}

[HttpGet]
public ActionResult Login()
{
    if (UserState.IsLoggedIn)
    {
        return RedirectToAction("Index");
    }

    return View(new LoginViewModel(UserState));
}

[HttpPost]
public ActionResult Login(LoginModel model)
{
    if (UserState.IsLoggedIn)
    {
        return RedirectToAction("Index");
    }

    // Do the login and redirect accordingly
    if (loginWasSuccess)
    {
        return RedirectToAction("Action", "Controller");
    }

    // Otherwise, add errors to model state and reload login page with errors.
   ModelState.AddModelError("InvalidLogon", "Some error message");

   return View(new LoginViewModel(UserState));
}