第一次寫博客,使用MVC做一個簡易版的用戶登錄,注銷
1.先完成登錄的靜態頁面,如下
2.點擊登錄,后台處理方法,校驗成功之后,設置session的過期時間和[username]
if (name == "admin" && pwd == "123.com")
{
Session["username"] = name.ToString();
Session.Timeout = 2;
// HttpCookie cook = new HttpCookie("cookusername", name.ToString());
// Response.Cookies.Add(cook);
return true;
}
return false;
3.驗證成功之后,我們就完成了用戶登錄
4.用戶注銷后台代碼:
public bool Del()
{
try
{
//刪除全部session
// Session.Abandon();
//刪除一個session
Session["UserName"] = null;
Session.Remove("UserName");
return true;
}
catch (Exception)
{
return false;
}
}
5.驗證是否登錄,如果沒有登錄跳轉到登錄頁面
public ActionResult About()
{
HttpContextBase context = this.HttpContext;
if (Session["username"]== null)
{
return RedirectToAction("index");
}
string session = context.Session.SessionID;
ViewBag.Message ="sessionId:"+ session;
return View();
}
6.就此完成用戶的登錄注銷,項目代碼地址:
7.總結:
cookie與session進行驗證過程:session[username]=admin 微軟會自動的生成一個sessionID 也就是
微軟生成這個數據后 會自動得在瀏覽器端保存一個id='ujqcl1sxips5bdpjtbe0eeij
'的值 ,key=“username”,value=“admin”的cookie,每當客戶端發送請求時, 瀏覽器 攜帶id(ujqcl1sxips5bdpjtbe0eeij)和key(username)和value(admin) 去服務器端做校驗,
如果存在id=‘ujqcl1sxips5bdpjtbe0eeij’ key=“username”,value=“admin”信息,並且過期時間還沒有到,則用戶存在;如果已到過期時間,或者客戶端,服務器端信息不匹配 則都需要重新登錄
這種方式只適合單一服務器,對於多台服務器,用戶session做不到共享,就會出現需要多次登錄的情況,這是需要共享session或者jwt