public IHttpActionResult Login(LoginInput login) { if (String.IsNullOrWhiteSpace(login.username) || String.IsNullOrEmpty(login.username) || String.IsNullOrWhiteSpace(login.password) || String.IsNullOrEmpty(login.password)) { return(BadRequest()); } var user = db.Users.Where(u => u.username.Equals(login.username) && u.password.Equals(login.password)).FirstOrDefault(); var response = new LoginOutput(); if (user != null) { response.code = 200; response.message = "success"; response.firstname = user.firstname; response.lastname = user.lastname; response.username = user.username; response.token = user.rowguid.ToString(); return(Ok(response)); } response.code = 400; response.message = "User not found."; return(Content(HttpStatusCode.NotFound, response)); }
public string UserLogin([Service] IOptions <TokenSettings> tokenSettings, LoginInput login) { var currentUser = Users.Where(_ => _.Email.ToLower() == login.Email.ToLower() && _.Password == login.Password).FirstOrDefault(); if (currentUser != null) { var securitykey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(tokenSettings.Value.Key)); var credentials = new SigningCredentials(securitykey, SecurityAlgorithms.HmacSha256); var claims = new Claim[] { new Claim(ClaimTypes.Role, "user"), new Claim("usercountry", "Brazil") }; var jwtToken = new JwtSecurityToken( issuer: tokenSettings.Value.Issuer, audience: tokenSettings.Value.Audience, expires: DateTime.Now.AddMinutes(20), signingCredentials: credentials, claims: claims ); return(new JwtSecurityTokenHandler().WriteToken(jwtToken)); } return("access denied!"); }
/// <summary> /// 登录 /// </summary> /// <param name="input"></param> /// <returns></returns> public async Task <LoginOutput> Login(LoginInput input) { AbpLoginResult abpLoginResult = await _LoginManager.LoginAsync(input.Username, input.Password, input.TenantId ?? 0); if (abpLoginResult.Result == AbpLoginResultType.InvalidUserNameOrEmailAddress) { return(new LoginOutput() { ErrorMessage = "无效的用户名", AbpLoginResult = abpLoginResult }); } if (abpLoginResult.Result == AbpLoginResultType.InvalidPassword) { return(new LoginOutput() { ErrorMessage = "无效的密码", AbpLoginResult = abpLoginResult }); } return(new LoginOutput() { AbpLoginResult = abpLoginResult }); }
public IActionResult Login([FromBody] LoginInput LoginInput) { var user = _facade.EmployeeService.GetAll().FirstOrDefault(u => u.Username == LoginInput.Username); // check if username exists if (user == null) { return(Unauthorized()); } // check if password is correct if (!VerifyPasswordHash(LoginInput.Password, user.PasswordHash, user.PasswordSalt)) { return(Unauthorized()); } // Authentication successful return(Ok(new { passwordreset = user.PasswordReset, id = user.Id, username = user.Username, isadmin = user.IsAdmin, token = GenerateToken(_employeeConverter.Convert(user)), })); }
public async Task <ActionResult <LoginOutput> > Login([FromBody] LoginInput input) { var userToVerify = await CreateClaimsIdentityAsync(input.UserNameOrEmail, input.Password); if (userToVerify == null) { return(BadRequest(new List <NameValueDto> { new NameValueDto("UserNameOrPasswordIncorrect", "The user name or password is incorrect!") })); } var token = new JwtSecurityToken ( issuer: _jwtTokenConfiguration.Issuer, audience: _jwtTokenConfiguration.Audience, claims: userToVerify.Claims, expires: _jwtTokenConfiguration.EndDate, notBefore: _jwtTokenConfiguration.StartDate, signingCredentials: _jwtTokenConfiguration.SigningCredentials ); return(Ok(new LoginOutput { Token = new JwtSecurityTokenHandler().WriteToken(token) })); }
public LoginOutput Login(LoginInput input) { var user = _userRepository.Get(x => (x.UserName == input.UserName || x.Phone == input.Mobile || x.Email == input.Email) && x.Password == input.Password ); if (user != null && user.Id > 0) { return(new LoginOutput() { IsSuccess = true, //ErrMessage = "指定的用户不存在" UserId = user.Id, UserName = user.UserName }); } else { return(new LoginOutput() { IsSuccess = false, ErrMessage = "指定的用户不存在" }); } }
public async Task <LoginResults> Login(LoginInput input) { var result = new Status(); var returnResults = new LoginResults { status = new Status(), userDetail = new UserViewModel() }; try { var password = Helpers.StringCipher.Encrypt(input.Password); var user = _context.Users.Where(x => x.UserName == input.UserName && x.Password == password && !x.Deleted).FirstOrDefault(); if (user != null) { returnResults.userDetail = user.Adapt <UserViewModel>(); result = new Status { StatusCode = 200, StatusDisplay = "Logged in Successfully", StatusValue = true }; } else { result = new Status { StatusCode = 198, StatusDisplay = "UserName and Password does not match", StatusValue = false }; } } catch (Exception ex) { result = new Status { StatusCode = 500, StatusDisplay = ex.Message, StatusValue = false }; } returnResults.status = result; return(returnResults); }
public ApiResult <SessionOutput> PubLogin(LoginInput miniProgramLoginInput) { //var miniProgram = Service<IAutoConfigService>().GetValue<WeChatPaymentConfig>(); //var loginUrl = // $"/sns/oauth2/access_token?appid={miniProgram.AppId}&secret={miniProgram.AppSecret}&code={miniProgramLoginInput.JsCode}&grant_type=authorization_code"; ////var loginUrl = //// $"/sns/oauth2/access_token?appid=wx3845717402bcb006&secret=a977a30163b6c14516236a912842521b&code={miniProgramLoginInput.JsCode}&grant_type=authorization_code"; //var url = BuildQueryUri(loginUrl); //var result = Connector.Get(url); ////如果请求错误,错误数据的格式示例:{"errcode":40029,"errmsg":"invalid code, hints: [ req_id: Hs2Q7a0732th50 ]"} //if (result.Contains("errmsg") && result.Contains("errcode")) { // var errorMessage = result.DeserializeJson<MiniErrorMessage>(); // var apiResult = new ApiResult { // Status = ResultStatus.Error, // Message = errorMessage.Errmsg, // MessageCode = errorMessage.Errcode.ConvertToInt() // }; // Service<IUserService>().Log($"公众号登录失败,code:{miniProgramLoginInput.JsCode},原因:{apiResult.ToJson()}"); // return ApiResult.Failure<SessionOutput>(apiResult.ToJson()); //} //var sessionOutput = result.DeserializeJson<SessionOutput>(); ////Service<IUserService>().Log($"公众号登录成功,code:{miniProgramLoginInput.JsCode},openId:{sessionOutput.openid}"); //return ApiResult.Success(sessionOutput); return(null); }
public AdminHomePage LoginAsAdmin(string login, string password) { LoginInput.SetValue(login); PasswordInput.SetValue(password); LoginButton.Click(); return(GoTo <AdminHomePage>()); }
internal async Task <bool> LoginAsync(GrpcChannel channel, string userName, string password) { var client = new Users.UsersClient(channel); var input = new LoginInput { Email = userName, Password = password }; var result = await client.LoginRequsetAsync(input); if (result.Id == 0) { return(false); } LoggedInUser.Instance.Id = result.Id; LoggedInUser.Instance.FirstName = result.FirstName; LoggedInUser.Instance.LastName = result.LastName; LoggedInUser.Instance.Email = result.Email; LoggedInUser.Instance.DirectManager = result.DirectManager; if (result.Permission.Equals(System.Enum.GetName(typeof(PermissionsEnum), PermissionsEnum.Employee))) { LoggedInUser.Instance.Permission = PermissionsEnum.Employee; } else { LoggedInUser.Instance.Permission = PermissionsEnum.Manager; } return(true); }
public UserOutput WebLogin(LoginInput requestDto) { Log.Error("Web login: {Username}/{Password}", requestDto.Username, requestDto.Password); User user = _userRepository.GetAll().FindField(x => x.Username.Equals(requestDto.Username)); return(Login(user, requestDto.Password)); }
public async Task <Tokens> LoginAsync(LoginInput input) { _logger.LogInformation("Login With Jwt Begin;"); var user = await _userRepository .Where(x => x.UserName == input.UserName || x.Email == input.UserName) .ToOneAsync(); if (user == null) { throw new NpsException("用户不存在", StatusCode.NotFound); } bool valid = EncryptHelper.Md5By32(input.Password) == user.Password; if (!valid) { throw new NpsException("请输入正确密码", StatusCode.ParameterError); } _logger.LogInformation($"用户{input.UserName},登录成功"); Tokens tokens = await CreateTokenAsync(user); return(tokens); }
public virtual async Task UnbindAsync(LoginInput input) { await CheckUnbindPolicyAsync(); var loginResult = await GetLoginResultAsync(input); using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId); await _identityOptions.SetAsync(); if (await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) == null) { throw new WechatAccountHasNotBeenBoundException(); } var identityUser = await _identityUserManager.GetByIdAsync(CurrentUser.GetId()); (await _identityUserManager.RemoveLoginAsync(identityUser, loginResult.LoginProvider, loginResult.ProviderKey)).CheckErrors(); await RemoveMiniProgramUserAsync(identityUser, loginResult.MiniProgram); if (!await _miniProgramUserRepository.AnyAsync(x => x.UserId == identityUser.Id)) { await RemoveUserInfoAsync(identityUser); } }
public IActionResult Post([FromBody] LoginInput input) { CheckStatus checkStatus = null; Usuario perfil = null; if (ModelState.IsValid) { try { perfil = _repository.Single <Usuario>(p => p.Email == input.correo); if (perfil.Password == input.contrasena) { return(BuildToken(input, perfil.Id)); } else { checkStatus = new CheckStatus(Status.Error, "Contraseña Incorrecta"); return(StatusCode(404, checkStatus)); } } catch { checkStatus = new CheckStatus(Status.Error, "Cuenta no registrada"); return(StatusCode(404, checkStatus)); } } else { checkStatus = new CheckStatus(Status.Error, Mensaje.InputInvalido); return(StatusCode(422, checkStatus)); } }
public LoginOutput Login(LoginInput input) { var user = db.Users.FirstOrDefault(u => u.LoginName == input.loginname && u.PassWord == input.password); if (user == null) { return(null); } else { if (user.Status == 0) { throw new UserFriendlyException("账号未启用"); } else { //记录日志 //记录IP,登录时间 user.LastLoginIP = IPHelper.GetHostAddress(); user.LastLoginTime = DateTime.Now; db.Entry(user).State = EntityState.Modified; db.SaveChanges(); } return(user.MapTo <LoginOutput>()); } }
private IActionResult BuildToken(LoginInput infocuenta, int id) { var claims = new[] { new Claim(JwtRegisteredClaimNames.UniqueName, infocuenta.correo), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_configuracion["Llave_secreta"])); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256); var expiration = DateTime.UtcNow.AddHours(1); JwtSecurityToken token = new JwtSecurityToken( issuer: "yourdomain.com", audience: "yourdomain.com", claims: claims, expires: expiration, signingCredentials: creds ); return(Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration, id })); }
public List <DailyRoutine.Core.Authorization.User.User> SearchUser(LoginInput input) { var context = new DailyRoutineDbContext(); var users = context.Users.Where(x => x.UserName.Contains(input.UserName) || x.Name.Contains(input.UserName) || x.Surname.Contains(input.UserName)).ToList(); return(users); }
// GET: Login/Details/5 public ActionResult Login(LoginInput input) { if (!ModelState.IsValid) { return(PartialView(input)); } var a = IUsers.GetUser(input.Email, input.Password); if (a != null) { if (Request.Cookies["UserId"] == null) { Response.Cookies["UserId"].Value = a.Id.ToString(); Response.Cookies["UserId"].Expires = DateTime.Now.AddMonths(1); } return(Json(new { url = "Test" })); } else { ViewBag.Message = "Email or Password is incorrect."; return(PartialView(new LoginInput { Email = input.Email, Password = input.Password })); } }
public IActionResult Login([FromBody] LoginInput model) { var user = repository.GetAll().FirstOrDefault(u => u.Username.ToLower().Equals(model.Username.ToLower())); // check if username exists if (user == null) { return(Unauthorized()); } // check if password is correct if (!VerifyPasswordHash(model.Password, user.PasswordHash, user.PasswordSalt)) { return(Unauthorized()); } // Authentication successful return(Ok(new { id = user.Id, name = user.FirstName + " " + user.LastName, username = user.Username, token = GenerateToken(user) })); }
public async Task <ActionResult> LoginAsync([FromBody] LoginInput loginInput) { try { var user = await userUsecase.GetAuthenticatedAsync(loginInput); if (user == null) { return(Unauthorized()); } var token = GenerateUserToken(user); return(Ok(token)); } catch (InvalidInputException) { return(BadRequest()); } catch (InvalidCredentialsException) { return(Unauthorized()); } catch { return(BadRequest()); } }
public virtual async Task BindAsync(LoginInput input) { await CheckBindPolicyAsync(); var loginResult = await GetLoginResultAsync(input); using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId); await _identityOptions.SetAsync(); if (await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) != null) { throw new WechatAccountHasBeenBoundException(); } var identityUser = await _identityUserManager.GetByIdAsync(CurrentUser.GetId()); (await _identityUserManager.AddLoginAsync(identityUser, new UserLoginInfo(loginResult.LoginProvider, loginResult.ProviderKey, WeChatManagementCommonConsts.WeChatUserLoginInfoDisplayName))).CheckErrors(); await UpdateMiniProgramUserAsync(identityUser, loginResult.MiniProgram, loginResult.UnionId, loginResult.Code2SessionResponse.OpenId, loginResult.Code2SessionResponse.SessionKey); await UpdateUserInfoAsync(identityUser, input.UserInfo); }
public Tuple <bool, UserInfoOutput> Login(LoginInput input) { var output = new UserInfoOutput(); var tulpe = new Tuple <bool, UserInfoOutput>(true, output); return(tulpe); }
public virtual async Task <LoginOutput> LoginAsync(LoginInput input) { var loginResult = await GetLoginResultAsync(input); using var tenantChange = CurrentTenant.Change(loginResult.MiniProgram.TenantId); await _identityOptions.SetAsync(); using (var uow = UnitOfWorkManager.Begin(new AbpUnitOfWorkOptions(true), true)) { var identityUser = await _identityUserManager.FindByLoginAsync(loginResult.LoginProvider, loginResult.ProviderKey) ?? await _miniProgramLoginNewUserCreator.CreateAsync(input.UserInfo, loginResult.LoginProvider, loginResult.ProviderKey); await UpdateMiniProgramUserAsync(identityUser, loginResult.MiniProgram, loginResult.UnionId, loginResult.Code2SessionResponse.OpenId, loginResult.Code2SessionResponse.SessionKey); await UpdateUserInfoAsync(identityUser, input.UserInfo); await uow.CompleteAsync(); } return(new LoginOutput { TenantId = loginResult.MiniProgram.TenantId, RawData = (await RequestIds4LoginAsync(input.AppId, loginResult.UnionId, loginResult.Code2SessionResponse.OpenId))?.Raw }); }
public async Task <LoginResult> Login(LoginInput input) { LoginResult loginResult = null; try { loginResult = new LoginResult() { ResultType = LoginResultType.Success, PayLoad = await _loginManager.Login(input.UserName, input.Password) }; } catch (AuthException ex) { loginResult = new LoginResult() { ResultType = LoginResultType.Fail, ErrorMessage = ex.GetExceptionMessage() }; } catch (Exception ex) { loginResult = new LoginResult() { ResultType = LoginResultType.Error, ErrorMessage = ex.GetExceptionMessage() }; } return(loginResult); }
public async Task Request_Tokens_Should_Get_AccessToken() { // Arrange var input = new LoginInput { AppId = "AppId", Code = "Code", EncryptedData = "EncryptedData", Iv = "Iv", RawData = "RawData", Signature = "Signature", UserInfo = new UserInfoModel { NickName = "NickName", Gender = 0, Language = "en", City = "City", Province = "Province", Country = "Country", AvatarUrl = "https://image.com/img.jpg" } }; // Act var result = await _loginAppService.LoginAsync(input); // Assert result.ShouldNotBeNull(); }
public static DataSet UserLogin(LoginInput loginO, string currAccDbName, string IPStr) { Dictionary <string, ParamObj> dic = new Dictionary <string, ParamObj>(); ParamObj paraO1 = new ParamObj(); paraO1.name = "land_name"; paraO1.size = 40; paraO1.type = SysDbType.VarChar; paraO1.value = loginO.username; ParamObj paraO2 = new ParamObj(); paraO2.name = "password"; paraO2.size = 40; paraO2.type = SysDbType.VarChar; paraO2.value = loginO.pwd; ParamObj paraO3 = new ParamObj(); paraO3.name = "login_time"; paraO3.type = SysDbType.BigInt; paraO3.value = System.DateTime.Now.ToUniversalTime().Ticks; ParamObj paraO4 = new ParamObj(); paraO4.name = "computer_ip"; paraO4.size = 40; paraO4.type = SysDbType.VarChar; paraO4.value = IPStr; ParamObj paraO5 = new ParamObj(); paraO5.name = "computer_name"; paraO5.size = 40; paraO5.type = SysDbType.NVarChar; paraO5.value = loginO.ComputerName; ParamObj paraO6 = new ParamObj(); paraO6.name = "computer_mac"; paraO6.size = 40; paraO6.type = SysDbType.VarChar; paraO6.value = loginO.MAC; ParamObj paraO7 = new ParamObj(); paraO7.name = "login_Id"; paraO7.size = 40; paraO7.type = SysDbType.VarChar; paraO7.value = loginO.Login_Id; dic.Add("land_name", paraO1); dic.Add("password", paraO2); dic.Add("login_time", paraO3); dic.Add("computer_ip", paraO4); dic.Add("computer_name", paraO5); dic.Add("computer_mac", paraO6); dic.Add("login_Id", paraO7); SQLObj sqlObj = new SQLObj(); sqlObj.cmdType = System.Data.CommandType.StoredProcedure; sqlObj.sqlString = "ServerUserLogin"; sqlObj.Param = dic; DataSet ds = DBHelper.GetDataSet("服务器端用户登录", currAccDbName, sqlObj); return(ds); }
public async Task <IActionResult> Login([FromBody] LoginInput reqData) { int resHttpStatusCode = 400; Dictionary <string, string> res = new Dictionary <string, string>(); Func <string, Task <bool> > authverifier = null; string authverifierToken = ""; switch (reqData.provider) { case "GOOGLE": authverifier = AuthToken.VerifyGoogleOauthV2Token; authverifierToken = reqData.idToken; break; case "FACEBOOK": authverifier = AuthToken.VerifyFacebookOauthToken; authverifierToken = reqData.authToken; break; } if (authverifier != null && await authverifier(authverifierToken).ConfigureAwait(true)) { int userSocialId = 0; using (var ctx = new ConclaveDbContext()) { var entity = from u in ctx.UserSocial where u.Email == reqData.email && u.Provider == reqData.provider select u; if (entity.FirstOrDefault() != null) { userSocialId = entity.First().Id; } else { UserSocial user = new UserSocial() { Provider = reqData.provider, Email = reqData.email, UserName = reqData.name }; ctx.Add(user); ctx.SaveChanges(); userSocialId = user.Id; } } string accessToken = AuthToken.GetNewAccessToken(userSocialId); string refreshToken = AuthToken.GetNewRefreshToken(userSocialId); res.Add("success", "true"); res.Add("email", reqData.email); res.Add("accessToken", accessToken); res.Add("refreshToken", refreshToken); _cache.StringSet(accessToken, userSocialId.ToString()); _cache.StringSet(refreshToken, userSocialId.ToString()); resHttpStatusCode = 200; } else { res.Add("success", "false"); res.Add("msg", "Invalid Token"); } return(StatusCode(resHttpStatusCode, JsonConvert.SerializeObject(res))); }
public void PubLogin_LoginInput_test() { LoginInput loginInput = null; var result = Resolve <MiniProgramService>().PubLogin(loginInput); Assert.NotNull(result); }
public IActionResult Login([FromBody]LoginInput input) { //从数据库验证用户名,密码 //验证通过 否则 返回Unauthorized //创建claim var authClaims = new[] { new Claim(JwtRegisteredClaimNames.Sub,input.Username), new Claim(JwtRegisteredClaimNames.Jti,Guid.NewGuid().ToString()) }; IdentityModelEventSource.ShowPII = true; //签名秘钥 可以放到json文件中 var authSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("SecureKeySecureKeySecureKeySecureKeySecureKeySecureKey")); var token = new JwtSecurityToken( issuer: "https://www.cnblogs.com/chengtian", audience: "https://www.cnblogs.com/chengtian", expires: DateTime.Now.AddHours(2), claims: authClaims, signingCredentials: new SigningCredentials(authSigningKey, SecurityAlgorithms.HmacSha256) ); //返回token和过期时间 return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token), expiration = token.ValidTo }); }
public async Task <ActionResult> Login(LoginInput input) { if (ModelState.IsValid) { var result = await signInManager.PasswordSignInAsync(input.Email, input.Password, true, lockoutOnFailure : true); if (result.Succeeded) { var tokenHandler = new JwtSecurityTokenHandler(); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(new Claim[] { new Claim(ClaimTypes.Name, input.Email) }), Issuer = configuration["JwtToken:Issuer"], Audience = configuration["JwtToken:Issuer"], Expires = DateTime.Now.AddDays(7), SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(Encoding.UTF8.GetBytes(configuration["JwtToken:SecretKey"])), SecurityAlgorithms.HmacSha512Signature), }; var token = tokenHandler.CreateToken(tokenDescriptor); return(Ok(new { token = tokenHandler.WriteToken(token), expiration = token.ValidTo })); } } return(BadRequest()); }
public ActionResult Login(LoginInput input, string returnUrl) { if (!ModelState.IsValid) return View("Login", input); var principalContext = MvcApplication.DomainConnections.FirstOrDefault(); // grab a dc connection if (principalContext == null) // not connected to any dcs { ModelState.AddModelError(string.Empty, "The login server is unavailable, please contact us if the problem persists."); return View("Login", input); } var user = UserPrincipal.FindByIdentity( principalContext, IdentityType.SamAccountName, input.Username); if (user == null) // not in active directory { ModelState.AddModelError(string.Empty, "Please enter a valid username and password."); return View("Login", input); } if (!user.Enabled.HasValue || !user.Enabled.Value) // account disabled { ModelState.AddModelError(string.Empty, "Your account is disabled."); } else { try { if (principalContext.ValidateCredentials(input.Username, input.Password)) // logged in successfully { Log.Info(string.Format("Successful login for '{0}' by '{1}'.", input.Username, Request.UserHostAddress)); FormsAuthentication.SetAuthCookie(input.Username, true); return RedirectFromLoginPage(returnUrl); } ModelState.AddModelError(string.Empty, "Please enter a valid username and password."); // failed } catch (LdapException ex) { Log.Error(string.Format("Problem w/{0}, disposing connection '{0}'", principalContext.ConnectedServer), ex); MvcApplication.DisposeConnection(principalContext); } catch (Exception ex) { Log.Error("Unable to validate credentials", ex); ModelState.AddModelError(string.Empty, "Unable to validate your credentials, please contact us if the problem persists."); } } Log.Warn(string.Format("Unsucessful login attempt to '{0}' by '{1}'.", input.Username, Request.UserHostAddress)); // always log if the account is valid return View("Login", input ); }
public ActionResult Index(LoginInput loginInput) { if (ModelState.IsValid) { var message = new LoginInputMessage {Input = loginInput, Result = new LoginResult()}; MvcContrib.Bus.Send(message); if (message.Result.Success) { FormsAuthentication.RedirectFromLoginPage(loginInput.Username, false); } ModelState.AddModelError("model", message.Result.Message); } return View(loginInput); }
public ActionResult Login(LoginInput input, string returnUrl) { if (ModelState.IsValid) { try { if (Membership.ValidateUser(input.Username, input.Password)) { FormsAuthentication.SetAuthCookie(input.Username, false); return RedirectFromLoginPage(returnUrl); } ModelState.AddModelError(string.Empty, "Please provide a valid username and password."); } catch (Exception) { ModelState.AddModelError(string.Empty, "An error occured while validating your credentials, please contact us if the problem persists."); } } return View(input); }