Сеанс ASP.NET Identity слишком быстро истекает на рабочем сервере

После применения это руководство в моем проекте, на моем локальном хосте проблем нет, однако, когда я развертываю сервер prod, который находится на plesk, срок действия сеанса истекает слишком быстро. Меньше 5 минут наверное и так постоянно.

Поскольку в учебнике вместо файла cookie используется localStorage, я не уверен, следует ли проверять время ожидания файла cookie.

О, с другой стороны, у меня есть это в моем Startup.Auth.cs:

    public void ConfigureAuth(IAppBuilder app)
    {
        //...
        OAuthOptions = new OAuthAuthorizationServerOptions
        { 
            //...
            AccessTokenExpireTimeSpan = TimeSpan.FromDays(14),
        };
    }

Как prod IIS устанавливает тайм-аут и что мне делать в моем web.config, чтобы переопределить этот тайм-аут?


person asdf_enel_hak    schedule 24.08.2015    source источник
comment
Это 20 минут, а не 5 сеансов.   -  person asdf_enel_hak    schedule 27.08.2015


Ответы (1)


Я предполагаю, что вы имеете в виду, что 14 дней недостаточно для вашей производственной среды? Если нет, вам придется уточнить, что именно вы подразумеваете под «слишком быстро».

Самый простой способ сделать это — добавить параметр в файл web.config.

<appSettings>
    <add key="cookieExpirationDays" value="30"/>
</appSettings>

А затем установите его в своем методе.

 public void ConfigureAuth(IAppBuilder app) {
    //...
   var daysStr = System.Configuration.ConfigurationManager.AppSettings["cookieExpirationDays"];
   var days = string.IsNullOrEmpty(daysStr) ? 14 : int.Parse(daysStr);
    OAuthOptions = new OAuthAuthorizationServerOptions
    { 
    //...
    AccessTokenExpireTimeSpan = TimeSpan.FromDays(days),
  };
}

EDIT (в ответ на редактирование ОП)

Если вы используете файлы cookie для сохранения токена аутентификации, попробуйте это (см. последнюю строку в инициализаторе).

app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    CookieName = "SecurityCookie",
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Authentication/Login"),
    CookieSecure = CookieSecureOption.SameAsRequest,
    CookieHttpOnly = true,
    AuthenticationMode = AuthenticationMode.Active,
    Provider = cookieProvider, // instance of Microsoft.Owin.Security.Cookies.CookieAuthenticationProvider
    LogoutPath = new PathString("/Authentication/LogOff"),
    SlidingExpiration = true,
    ExpireTimeSpan = TimeSpan.FromDays(days),
});

Редактировать 2 Добавлены примеры ссылок

Полное руководство

Общая документация и справка Microsoft

person Igor    schedule 24.08.2015
comment
Я думаю, что это мой случай, и вторая часть вашего ответа подходит для моего случая, можете ли вы указать полный пример, спасибо - person asdf_enel_hak; 25.08.2015
comment
@asdf_enel_hak я добавил 2 ссылки внизу поста - person Igor; 25.08.2015
comment
Спасибо, думаю поможет - person asdf_enel_hak; 25.08.2015