예제 #1
0
        public ActionResult Logout()
        {
            FormsAuthManager authManager = new FormsAuthManager();

            authManager.SignOut();
            //清除所有的 session
            Session.RemoveAll();
            ViewBag.Name = "Guest";
            return(RedirectToAction("Index"));
        }
예제 #2
0
 /// <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);
     }
 }
예제 #3
0
        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());
            }
        }