public ActionResult Logout() { FormsAuthManager authManager = new FormsAuthManager(); authManager.SignOut(); //清除所有的 session Session.RemoveAll(); ViewBag.Name = "Guest"; return(RedirectToAction("Index")); }
/// <summary> /// 登入時將登入中角色加入 HttpContext 的 User 物件去 以便驗證授權用 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void Application_AuthenticateRequest(object sender, EventArgs e) { if (Request.IsAuthenticated) { //取得登入者的資料 FormsAuthManager auth = new FormsAuthManager(); var userData = auth.GetUser(); // 將儲存在 FormsAuthenticationTicket 中的角色定義取出,並轉成字串陣列 string[] roles = userData.Identity.ToString().Split(new char[] { ',' }); //指派角色到目前這個 HttpContext 的 User 物件去 //然後會把這個資料放到Context.User內 Context.User = new GenericPrincipal(Context.User.Identity, roles); } }
public ActionResult Login(LoginViewModel model) { try { if (!ModelState.IsValid) { return(View(model)); } MemberOperation memberDataOperation = new MemberOperation(); RoleOperation roleDataOperation = new RoleOperation(); if (memberDataOperation.CheckUserData(model)) { LoginUser user = new LoginUser(); //登入會員的角色編號 var tmpRole = from c in memberDataOperation.Get() where model.Email == c.Email select c.Role_No; foreach (var item in tmpRole) { if (item.Equals(1)) { user.Identity = Identity.User; } else if (item.Equals(2)) { user.Identity = Identity.Admin; } } //登入會員的名稱 user.UserName = memberDataOperation.user.Name; //登入會員的帳號 user.UserEmail = memberDataOperation.user.Email.ToString(); FormsAuthManager authManager = new FormsAuthManager(); authManager.SignIn(user); switch (user.Identity) { case Identity.User: return(RedirectToAction("Index", "Home")); case Identity.Admin: return(RedirectToAction("Index", "Admin")); default: return(RedirectToAction("Index", "Home")); } } else { ModelState.AddModelError("", "無效的帳號或密碼。"); return(View()); } } catch (Exception ex) { TempData["Msg"] = ex.ToString(); return(View()); } }