2017-12-20 4 views
1

Derzeit und das funktioniert, ich tue das folgende Setup-Cookie-Authentifizierung in einer ASP-MVC-Core-2-App Identität:Asp Mvc Core 2 Identität nicht Cookie-Namen einstellen, wenn AddAuthentication() verwendet addCookie()

services.ConfigureApplicationCookie(options => 
{ 
    options.ExpireTimeSpan = TimeSpan.FromDays(1); 
    options.SlidingExpiration = true; 
    options.LoginPath = "/Account/LogIn"; 
    options.LogoutPath = "/Account/LogOff"; 
    options.Cookie.Name = "MyCookieName"; 
    options.AccessDeniedPath = "/Account/AccessDenied"; 
}); 

ich möchte JWT zu dieser App hinzuzufügen und entsprechend der Dokumentation here, ich weiß, dass durch so etwas wie dies unter Verwendung von (basierend auf der gleichen Konfiguration wie oben):

services.AddAuthentication() 
.AddCookie(options => 
{ 
    options.ExpireTimeSpan = TimeSpan.FromDays(1); 
    options.SlidingExpiration = true; 
    options.LoginPath = "/Account/LogIn"; 
    options.LogoutPath = "/Account/LogOff"; 
    options.Cookie.Name = "MyCookieName"; 
    options.AccessDeniedPath = "/Account/AccessDenied"; 
}) 
.AddJwtBearer(options => 
{ // options }); 

Wenn ich dies tun (auch wenn ich weg t Er AddJwtBearer Kette) der Cookie wird nicht mehr den von mir angegebenen Namen gegeben. Der Login-Prozess funktioniert immer noch und ich bekomme ein Cookie, aber es wird der Standard-Asp-Cookie-Name genannt.

Ich nehme an, dass diese beiden Methoden zum Einstellen der Optionen die gleichen sind und die ConfigureApplicationCookie ist nur eine Shortcut-Methode für die gleiche Sache.

Fehle ich etwas?

Danke, Brian

+0

Sie müssen die Authentifizierungsschema Namen auf Ihrer 'AddAuthentication()' bereitzustellen. Versuchen Sie 'AddAuthentication (CookieAuthenticationDefaults.AuthenticationScheme)'? –

+0

Danke David. Ich habe das getan, und ich bekomme das gleiche Ergebnis, der Cookie heißt ".AspNetCore.Identity.Application" und nicht "MyCookieName". – Brian

+0

hmm komisch, weil ich das Authentifizierungsschema angeben musste. Wenn ich es dort leer lasse, bekam ich "No authenticationScheme wurde angegeben, und es wurde kein DefaultChallengeScheme gefunden" -Fehler. Haben Sie für den Cookie-Namen ".AspNetCore.Identity.Application" Identity Server 4 verwendet? –

Antwort

0

Versuchen Sie Folgendes:

services.AddAuthentication() 
     .AddJwtBearer(options => 
     { 
      // Jwt options. 
     }); 

services.ConfigureApplicationCookie(options => 
{ 
    // Cookie settings 
}); 
+0

Dies kompiliert und ich bekomme den richtigen Cookie-Namen. Ich habe noch nicht vollständig getestet, ob ich mit einem Token verbinden kann, aber ich gehe davon aus, dass ich es kann. Die Dokumentation ließ mich denken, dass beide Authentifizierungsmethoden nach dem AddAuthentication() - Aufruf verkettet werden mussten. Ich melde mich wieder, wenn alles funktioniert, für den Fall, dass jemand anderes darauf stößt. – Brian

Verwandte Themen