Beispiel #1
0
 public ActionResult LogOn(UserModel model, string returnUrl)
 {
     return LogOnWithLoginPassword(model.Login, model.Password, returnUrl);
 }
        public ActionResult LogOn(UserModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                string salt, passwordHash;
                switch (AppConfiguration.AuthenticationMethod)
                {
                    case AuthenticationType.Native:
                        salt = RandomHelper.GetRandomString(10);
                        passwordHash = CryptHelper.GetSha512Base64Hash(salt + CryptHelper.GetSha512Base64Hash(model.Login.ToLower() + model.Password));
                        break;
                    default:
                        salt = string.Empty;
                        passwordHash = model.Password;
                        break;
                }

                LoginResult loginResult = ServiceProxySingleton.Instance.Logon(new LogonArg(model.Login.ToLower(), passwordHash, salt));

                if (loginResult.IsSuccess())
                {
                    Session.RemoveAll();
                    Session[Constants.SESSION_INSTANCE_ID] = loginResult.InstanceId;
                    SessionHelper.InstanceName = GetViewInstanceName(loginResult.InstanceName);
                    Session[Constants.SESSION_AUTH_INFO] = loginResult.Token;
                    SessionHelper.UserName = model.Login;
                    SessionHelper.LastUsedInstanceId = loginResult.LastUsedInstanceId;
                    Session[Constants.SESSION_FORCED_LOGOUT] = null;
                    SessionHelper.Permissions = loginResult.Access;
                    TempData["ReturnUrl"] = returnUrl;
                    return RedirectToAction("LogOn", "Login");
                }
                ModelState.AddModelError("", loginResult.ErrorMessage);
            }

            // If we got this far, something failed, redisplay form
            return View(model);
        }