public void Should_remember_me() { const string userName = "******"; const string password = "******"; var identity = _identityDirectory.CreateIdentity(); var success = _identityStore.AddCredentials(identity, userName, password); Assert.IsTrue(success); var result = _identityStore.AuthenticateWithCredentials(userName, password); Assert.IsNotNull(result); Assert.AreEqual(identity, result.Identity); Assert.AreEqual(AuthenticationStatus.Authenticated, result.Status); var result2 = _identityStore.RememberMe(result.RememberMeToken); Assert.IsNotNull(result2); Assert.AreEqual(identity, result2.Identity); Assert.AreEqual(AuthenticationStatus.Authenticated, result2.Status); }
public Task RouteRequest(IOwinContext context, Func <Task> next) { var cookie = context.Request.Cookies[IdentityCookie]; if (cookie == null) { cookie = string.Empty; var rememberMe = context.Request.Cookies[RememberMeCookie]; if (rememberMe != null) { var authenticationResult = _identityStore.RememberMe(rememberMe); if (authenticationResult.Status == AuthenticationStatus.Authenticated) { context.Response.Cookies.Append(IdentityCookie, authenticationResult.Identity); cookie = authenticationResult.Identity; } SetAuthentication(context, authenticationResult); } } var identification = new Identification(cookie, _identityDirectory.GetClaims(cookie)); context.SetFeature <IIdentification>(identification); context.SetFeature <IUpstreamIdentification>(identification); if (string.Equals(SecureHomePage, context.Request.Path.Value, StringComparison.OrdinalIgnoreCase)) { identification.AllowAnonymous = true; } if (string.Equals("POST", context.Request.Method, StringComparison.OrdinalIgnoreCase)) { var path = context.Request.Path.Value; if (string.Equals(LoginPostback, path, StringComparison.OrdinalIgnoreCase)) { Login(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(LogoutPostback, path, StringComparison.OrdinalIgnoreCase)) { Logout(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(RegisterPostback, path, StringComparison.OrdinalIgnoreCase)) { Register(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(EndSessionPostback, path, StringComparison.OrdinalIgnoreCase)) { EndSession(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(ChangePasswordPostback, path, StringComparison.OrdinalIgnoreCase)) { ChangePassword(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(RequestPasswordResetPostback, path, StringComparison.OrdinalIgnoreCase)) { SendPasswordReset(context, identification); return(context.Response.WriteAsync(string.Empty)); } if (string.Equals(ResetPasswordPostback, path, StringComparison.OrdinalIgnoreCase)) { ResetPassword(context, identification); return(context.Response.WriteAsync(string.Empty)); } } return(next()); }