2016-04-11 20 views
5

sto usando ASP .NET core RC1 Facebook-autenticazione e silding finestra scadenza del cookie impostato in questo modo:ASP .NET di autenticazione Nucleo Cookie cambiamenti di scadenza dal timestamp a "sessione" su ritorno

app.UseIdentity(); 
    app.UseFacebookAuthentication(); 

e

services.AddIdentity<ApplicationUser, IdentityRole>((options => 
     { 
      options.Cookies.ApplicationCookie.CookieName = "myauthcookie"; 
      options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5); 
      options.Cookies.ApplicationCookie.SlidingExpiration = true; 

     })) 
      .AddEntityFrameworkStores<ApplicationDbContext>() 
      .AddDefaultTokenProviders(); 

Questo funziona correttamente quando l'utente accede per la prima volta - la scadenza del cookie è impostata correttamente. Tuttavia, quando l'utente torna alla pagina, la scadenza del cookie è impostata su "Sessione", quindi in pratica l'utente deve eseguire nuovamente l'autenticazione ogni altra visita.

Perché sta succedendo? Non l'ho configurato correttamente?

Aggiornamento: Ora ho eseguito alcuni test senza SlidingExpiration e il problema rimane lo stesso. Al ritorno alla pagina, la scadenza del cookie viene modificata in "Sessione". Sto usando Chrome.

Inoltre, non sono in esecuzione su https. Questo potrebbe essere un fattore?

+0

il cookie di Facebook è un cookie diverso, probabilmente è necessario impostarlo in modo simile al principale applicationcookie, guarda options.Cookies.External ... –

+0

Questo ha molto senso. Ma allora perché la data di scadenza del mio cookie di autenticazione è corretta in primo luogo? Effettuo il login con Facebook ogni volta che si ottiene – severin

+0

alla fine si ottiene un cookie dell'applicazione e dovrebbe funzionare come configurato, sto solo indovinando che potrebbe esserci qualche logica di interazione con il cookie esterno che si ottiene anche come parte del processo di Facebook quindi impostandolo con potrebbero essere necessarie impostazioni simili, sto solo sputando se fossi sicuro che avrei postato come risposta –

risposta

0

Come risulta, l'aggiornamento a ASP.NET Core RC2 ha risolto questo problema, suggerendo che potrebbe essere stato un bug.

3

Risposta breve

Set isPersistent: true quando si chiama SignInManager.ExternalLoginSignInAsync.

dettagli

Nel modello di applicazione Web ASP.NET core, il metodo AccountController.ExternalLoginCallback contiene questo codice:

_signInManager.ExternalLoginSignInAsync(
    info.LoginProvider, 
    info.ProviderKey, 
    isPersistent: true);  <------ set a persistent cookie. 

Se impostiamo isPersistent: true quando si chiama ExternalLoginSignInAsync, questa configurazione di avvio ...

services.AddIdentity<ApplicationUser, IdentityRole>(options => 
    { 
     options.Cookies.ApplicationCookie.CookieName = "MyApplicationCookie"; 
     options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(5); 
     options.Cookies.ApplicationCookie.SlidingExpiration = true; 
    }) 
    .AddEntityFrameworkStores<ApplicationDbContext>() 
    .AddDefaultTokenProviders(); 

... risultati in questo cookie dell'applicazione ...

MyApplicationCookie is persistent.

... che persiste attraverso le sessioni del browser.

+1

Grazie per la tua risposta, Shaun. Anche se non l'ho specificato nella mia domanda, sto già impostando'isPersistent: true' nella mia chiamata a SignInManager, quindi il codice che sto eseguendo è in effetti esattamente quello che hai postato, il che spiega perché il cookie è impostato correttamente su il primo login Il mio problema è che in alcune visite di ritorno, "Expires on" viene sovrascritto e impostato su "Session". – severin

+0

@fiskeboss È strano. Non sto vivendo lo stesso comportamento. Potresti per favore provare con 'options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromSeconds (10) 'e aggiorna la pagina ogni cinque secondi per vedere cosa succede con il tuo cookie. Per me l'aggiornamento ogni cinque secondi spinge la scadenza di altri dieci secondi. Cosa succede con te? –

+0

Inoltre, su quale browser web stai riscontrando questo? –

Problemi correlati