1. 程式人生 > 實用技巧 >車輛派遣系統-7.24更新

車輛派遣系統-7.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.燃盡圖