車輛派遣系統-7.24更新
阿新 • • 發佈:2020-07-24
1.今日任務:優化登入後分角色顯示頁面
2.核心程式碼和效果圖:
效果圖:
對頁面文字框驗證寫了長度限制和不能為空提示:
public async Task<bool> Login(string u_name, string u_pwd) { using (IDAL.IUserService userSvc = new DAL.UserService()) { return await userSvc.GetAll().AnyAsync(predicate: m => m.u_name == u_name && m.u_pwd == u_pwd); } }
[HttpGet] public ActionResult Login() { return View(); } [HttpPost] [ValidateAntiForgeryToken] public async Task<ActionResult> Login(LoginViewModel lg) { if (ModelState.IsValid) {if (await userManager.Login(lg.u_name, lg.u_pwd)) { //跳轉 //是否記住我 if (lg.RememberMe) { Response.Cookies.Add(new HttpCookie(name:"u_name",Server.UrlEncode(lg.u_name)) { Value= lg.u_name, Expires = DateTime.Now.AddDays(7) }); } else { Session["u_name"] = lg.u_name; } return RedirectToAction(nameof(Index)); } else { ModelState.AddModelError(key:"",errorMessage:"您的賬號和密碼有誤"); }; } return View(lg); }
過濾器:
public override void OnAuthorization(AuthorizationContext filterContext) { //base.OnAuthorization(filterContext); if(!(filterContext.HttpContext.Session["u_name"]!=null||filterContext.HttpContext.Request.Cookies["u_name"]!=null)) { filterContext.Result = new RedirectToRouteResult(new RouteValueDictionary() { { "controller","Home"}, { "action","Login"} }); } }
3.遇到的問題:
① 輸入使用者名稱和密碼登入後需要在主頁面顯示登入的使用者名稱,cookie對中文編碼出現亂碼;
② 登入後跳轉的首頁需要判斷角色去顯示不同的內容;
4.解決的方案
① 使用cookie的編碼和解碼對使用者名稱進行封裝;
② 在前臺介面獲取到登入使用者的角色id值,在頁面中使用if進行判斷分別去顯示不同的內容;
5.燃盡圖