public override void OnAuthorization(HttpActionContext actionContext) { var authorizationHeader = actionContext.Request.Headers.Authorization; if (authorizationHeader == null) { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized); } else { var token = authorizationHeader.Parameter; //User:Passward need to be in base64 encoded //Need to give Authorization Basic MzEwMTkzMTQzOlRlc3QxMjM= while making request in header var tokenValues = Encoding.UTF8.GetString(Convert.FromBase64String(token)).Split(':'); var userName = tokenValues[0]; var password = tokenValues[1]; if (_securityProvider.Login(userName, password)) { System.Threading.Thread.CurrentPrincipal = new GenericPrincipal(new GenericIdentity(userName), null); //Now this identity can be used to access logged-in current username } else { actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Unauthorized); } } }
public ActionResult Login(LoginViewModel model) { if (ModelState.IsValid) { try { // Cookie is not persisted, user has to login every time. Add checkbox for persistent cookie? if (!_securityProvider.Login(model.UserName, model.Password)) { ModelState.AddModelError("", "Incorrect username or password."); } else { return(RedirectToAction("Index", "Home")); } } catch (Exception e) { log.Error(string.Format("User login failed - {0}", e.Message, e)); ModelState.AddModelError("", "Something went wrong while trying to log you in."); } } return(View()); }