Exemple #1
0
        public async Task <ActionResult> Login(LoginViewModel model, string returnUrl)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            // This doesn't count login failures towards account lockout
            // To enable password failures to trigger account lockout, change to shouldLockout: true
            //var result = await SignInManager.PasswordSignInAsync(model.Email, model.Password, model.RememberMe, shouldLockout: false);
            //switch (result)
            //{
            //    case SignInStatus.Success:
            //        return RedirectToLocal(returnUrl);
            //    case SignInStatus.LockedOut:
            //        return View("Lockout");
            //    case SignInStatus.RequiresVerification:
            //        return RedirectToAction("SendCode", new { ReturnUrl = returnUrl, RememberMe = model.RememberMe });
            //    case SignInStatus.Failure:
            //    default:
            //        ModelState.AddModelError("", "Invalid login attempt.");
            //        return View(model);
            //}
            using (var us = new UserService.UserServiceClient())
            {
                //var result = (SignInStatus) us.ValidateUser(model);

                //var user = new ApplicationUser() { UserName = model.Username };
                //var uresult = await UserManager.CreateAsync(user, model.Password);

                var hash      = System.Security.Cryptography.SHA1.Create();
                var encoder   = new System.Text.ASCIIEncoding();
                var combined  = encoder.GetBytes(model.Password ?? "");
                var hashvalue = BitConverter.ToString(hash.ComputeHash(combined)).ToLower().Replace("-", "");

                model.Password = hashvalue;

                var result = us.ValidateUserByUsernameAndPassword(model);


                if (result != null)
                {
                    CustomPrincipalSerializeModel serializeModel = new CustomPrincipalSerializeModel();
                    serializeModel.Id        = result.UserID;
                    serializeModel.FirstName = result.Username;

                    JavaScriptSerializer serializer = new JavaScriptSerializer();

                    string userData = serializer.Serialize(serializeModel);

                    FormsAuthenticationTicket authTicket = new FormsAuthenticationTicket(
                        1,
                        result.Username,
                        DateTime.Now,
                        DateTime.Now.AddMinutes(15),
                        false,
                        userData);

                    string     encTicket = FormsAuthentication.Encrypt(authTicket);
                    HttpCookie faCookie  = new HttpCookie(FormsAuthentication.FormsCookieName, encTicket);
                    Response.Cookies.Add(faCookie);
                    return(RedirectToLocal(returnUrl));
                }
                else
                {
                    ModelState.AddModelError("", "Invalid login attempt.");
                    return(View(model));
                }
            }

            //var sresult = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: false);
            //using (var us = new UserService.UserServiceClient())
            //{
            //    //var result = (SignInStatus) us.ValidateUser(model);

            //    //var user = new ApplicationUser() { UserName = model.Username };
            //    //var uresult = await UserManager.CreateAsync(user, model.Password);

            //    var hash = System.Security.Cryptography.SHA1.Create();
            //    var encoder = new System.Text.ASCIIEncoding();
            //    var combined = encoder.GetBytes(model.Password ?? "");
            //    var hashvalue = BitConverter.ToString(hash.ComputeHash(combined)).ToLower().Replace("-", "");

            //    model.Password = hashvalue;

            //    var result = us.ValidateUserByUsernameAndPassword(model);


            //    if (result != null)
            //    {
            //        FormsAuthentication.SetAuthCookie(result.UserID.ToString(), model.RememberMe);
            //        //Response.Cookies.Add(new HttpCookie("RoleId", result.RoleID.ToString()) { Expires = DateTime.Now.AddDays(-1) });
            //        //Response.Cookies.Add(new HttpCookie("UserId", result.UserID.ToString()) { Expires = DateTime.Now.AddDays(-1) });
            //        //System.Diagnostics.Debug.WriteLine("Is user authenticated? {0}", User.Identity.IsAuthenticated);
            //        //System.Diagnostics.Debug.WriteLine("Username :  {0}", User.Identity.GetUserName());
            //        return RedirectToLocal(returnUrl);
            //    }
            //    else
            //    {
            //        ModelState.AddModelError("", "Invalid login attempt.");
            //        return View(model);
            //    }
            //}
        }