2016-04-22 117 views
0

我正在使用ASP.NET MVC 6並嘗試存儲會話Cookie,但是當我打開瀏覽器時,它只是表示Expires:Session。ASP.NET CookieAuthentication不會存儲比瀏覽器會話更長的Cookie

Startup.cs:

 app.UseCookieAuthentication(options => 
     { 
      options.AutomaticAuthenticate = true; 
      options.AutomaticChallenge = false; 
      options.SlidingExpiration = true; 
      options.ExpireTimeSpan = TimeSpan.FromDays(30); 
     }); 

這應該設置cookie將持續30天,但不起作用。

第二個問題,會話信息存儲在哪裏?我正在使用Microsoft Azure託管這些內容,並且還使用SQL存儲,但沒有專門爲處理會話存儲設置任何內容。

回答

0

您的應用程序是否跨越多個實例或自動縮放?如果有,你可能需要設置DataProtection service,因爲一個請求可以被認證,但下一個(可能登陸另一個實例)不會。

現在我們Startup.cs文件有以下幾點:

public void ConfigureServices(IServiceCollection services) 
{ 
    //... 
    services.AddDataProtection(); 
    services.ConfigureDataProtection(configure => 
    { 
     configure.SetApplicationName("YourAppName"); 
    }); 
    //... 
} 

public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) 
    { 
     //... 

     app.UseCookieAuthentication(options => 
     { 
      options.LoginPath = new PathString("/"); 
      options.AutomaticAuthenticate = true; 
      options.AutomaticChallenge = true; 
      options.ExpireTimeSpan = new TimeSpan(1, 0, 0); 
      options.SlidingExpiration = true; 

     }); 

     //... 
    } 

這可以確保得到的cookie在您的Web應用程序的所有實例共享。

+0

這對於Azure中的Web角色(而不是WebApp)是否也適用? – Jennet

+0

對於Web角色,我會嘗試在其他地方講述關鍵字,比如Azure存儲,請檢查以下公告:https://blogs.msdn.microsoft.com/webdev/2016/11/16/announcing-asp-net-core- 1-1 / –

相關問題