Я использую аутентификацию с использованием cookie без идентификации и следующих пакетов Nuget:
<PackageReference Include="Microsoft.AspNetCore.All" Version="2.0.5" />
<PackageReference Include="Microsoft.AspNetCore.Authentication.WsFederation" Version="2.0.3" />
Я установил короткий тайм-аут в своем cookie-файле и хочу, чтобы мои вызовы API возвращали статус 401 вместо перенаправления 302 по истечении срока действия cookie. Мой ConfigureServices
выглядит следующим образом:
public void ConfigureServices(IServiceCollection services)
{
services.AddTransient<IRestService, RestService>();
services.AddDataProtection()
.SetApplicationName("AspNetCookieShare")
.PersistKeysToFileSystem(new DirectoryInfo(Configuration["DataProtectionKeyDirectory"]));
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultSignInScheme = CookieAuthenticationDefaults.AuthenticationScheme;
sharedOptions.DefaultChallengeScheme = WsFederationDefaults.AuthenticationScheme;
})
.AddWsFederation(options =>
{
options.Wtrealm = Configuration["Wtrealm"];
options.MetadataAddress = "http://example.com/metadata.xml";
options.SkipUnrecognizedRequests = true;
options.RequireHttpsMetadata = false;
options.UseTokenLifetime = false;
})
.AddCookie(options =>
{
options.ExpireTimeSpan = TimeSpan.FromSeconds(10);
options.Cookie.Expiration = TimeSpan.FromSeconds(10);
options.Cookie.Name = "AspNetShared";
options.Cookie.Path = "/";
options.Events.OnRedirectToLogin = context =>
{
context.Response.StatusCode = 401;
return Task.CompletedTask;
};
});
services.AddMvc();
}
Я использую OnRedirectToLogin, однако, я все еще получаю 302 ответа, а не 401 после истечения срока действия куки:
![image](https://user-images.githubusercontent.com/812974/39216349-454d181c-47e9-11e8-9128-e7b7e750d780.png)
Что я делаю не так?