入門實戰-用戶登錄,記錄Cookie,使用Session
用戶登錄功能是做專案開發的必備功能,各個業務點中都要讀取和使用用戶資訊,所以用戶登錄,并記錄用戶資訊可以使用Cookie,Session等功能,
(1).先在Home視圖內建立一個Login.cshtml的登錄檔案,代碼如下


(2).然后是Action的撰寫;還是2個action,一個HttpGet,一個HttpPost;

(3).在HttpPost型別的Action Login內,要進行密碼的驗證和快取資料;我貼出代碼,注意看關鍵行注釋說明;
[HttpPost] public IActionResult Login(string userName,string passWord) { string uName = userName; string uPass = passWord;//此處可以對密碼進行加密處理 //以用戶名,密碼為條件,從資料庫獲取用戶物件; //if(User!=null){則將用戶物件使用Cookie/Session快取} //代碼假定用戶名=admin 密碼=123456 if (uName=="admin" && uPass=="123456") { //1.最簡單的Cookie用法(不安全的): CookieOptions options = new CookieOptions(); options.Expires = DateTime.Now.AddMinutes(10);//10分鐘后過期 Response.Cookies.Append("cookie_UserName", uName, options);//設定用 Response.Cookies.Append("cookie_UserPass", uPass, options);//設定密碼 string _userName = Request.Cookies["cookie_UserName"];//讀取cookie用戶名 string _userPass = Request.Cookies["cookie_UserPass"];//讀取cookie密碼 ViewData["_userName"] = _userName; ViewData["_UserPass"] = _userPass; //2.使用基于Claim的 Cookie加密認證 //使用前,可以在Startup.cs中配置Cookie資訊 var claims = new[] { new Claim(ClaimTypes.Name,uName), new Claim("UserPass",uPass) //還可以添加登錄時間,ip等資訊 }; var claimsIdentity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme); ClaimsPrincipal user = new ClaimsPrincipal(claimsIdentity); HttpContext.SignInAsync(CookieAuthenticationDefaults.AuthenticationScheme, user, new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTimeOffset.Now.AddMinutes(20) } ); return RedirectToAction("Index", "Home");//不同Controller的跳轉寫法 //return Redirect("Privacy");//同一個Controller下的寫法 } else { return RedirectToAction("Error", "Home"); } }
(4).在Index的action內,要進行一個判讀讀取;

(5).在Index.cshtml中進行用戶資訊的讀取顯示,但是發現,讀取Claims的資訊時,沒有成功,雖然在Login的Action內,做了設定,但還沒有在startup.cs中配置Cookie資訊;


(6).在Startup.cs檔案中,配置Cookie,這樣就可以讀取到Claims的資訊;


(7).在導航中做個判斷,用戶登錄,顯示【用戶名】和退出,否則顯示【登錄】

(8).在HomeController中等登錄Login Action下增加一個Logout,用來實作退出功能



(8).Session的簡單實用實體,先在Startup.cs中配置一下session的有效期;在startup.cs的Configure方法中,增加app.UseSession();


(9).還是在Login的Action中,增加一段Session設定和讀取的代碼

(10).最后可以檢驗一下2分鐘后,退出時,看看還不能獲取到session值,

(11).在導航選單上再加上驗證,比如在點擊上傳檔案時,如果用戶沒登錄,則直接跳轉到登錄頁(默認跳轉已經在startup.cs的cookie設定中配好了url),首先還是需要在startup.cs中添加參考,然后在上傳檔案的Action上增加[Authorize]宣告,這樣在點擊導航[上傳檔案]時,直接就跳轉到了登錄頁面,照此操作,你可以將要驗證的Action或者整個類都宣告上均可,



轉載請註明出處,本文鏈接:https://www.uj5u.com/net/533466.html
標籤:.NET Core
