У меня есть приложение asp.net core 1.1
, и я устанавливаю время ожидания сеанса на 3 часа. Поэтому я ожидаю, что данные в сессии будут оставаться в течение 3 часов.
public void ConfigureServices(IServiceCollection services)
{
// authorization
services.AddAuthorization();
services.AddMvc(config =>
{
var policy = new AuthorizationPolicyBuilder()
.RequireAuthenticatedUser()
.Build();
})
services.AddKendo();
services.AddSession();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
//configure identity server 3
app.UseIdentityServer(Configuration["Identity:Authority"],
Configuration["Identity:ClientId"],
Configuration["Identity:PostLogoutRedirectUri"],
domainService);
app.UseSession(new SessionOptions()
{
IdleTimeout = new TimeSpan(3, 0, 0)
});
app.UseMvc(routes =>
{
});
// Configure Kendo UI
app.UseKendo(env);
}
Однако, оставаясь идеальным в течение 20 минут, сеанс пользователя получает тайм-аут
На основании документации
Приложение использует свойство IdleTimeout для определения продолжительности сеанса
может быть простаивает до того, как его содержимое в кеше сервера будет заброшено.
Это свойство не зависит от срока действия файла cookie.
Таким образом, существует тайм-аут для данных и отдельный тайм-аут для файла cookie сеанса. Однако, основываясь на выпуске 169 , вы не можете установить тайм-аут для файла cookie сеанса.
Мое приложение также использует IdentityServer 3 и создает файл cookie для аутентификации, который имеет более длительное время ожидания (более 3 часов). и я не думаю, что auth cookie имеет какое-либо отношение к cookie сессии.
Вопросы
Есть ли какие-либо дополнительные настройки, связанные с сеансом, которые мне нужно сделать?
Как я могу проверить время истечения определенного куки. На сервере я не вижу эту информацию в Request.Cookies
. это просто пара ключ-значение.