在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)
}
答案 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));
}