数日前、asp.netコア1.1からコア2.0にWebアプリケーションをアップグレードすることに決めました。 20分から30分を超えても認証が持続しないことを除いて、すべてが軽微な変更の後で正常に動作するようです。asp.net-core2.0ユーザーの自動ログオフ(20-30分後)
自分のwebappで同じ問題が発生し、「ASP.NET Core Webアプリケーション」 - > .NET Framework 4.6.1 + ASP.NET Core 2.0 + MVCが発生するため、Visual Studioからデフォルトの例を取ることができます+個々のユーザーアカウント。
設定はデフォルトで、ユーザーが14日間ログインする必要があります。
public void ConfigureServices(IServiceCollection services)
{
services.AddDbContext<ApplicationDbContext>(options =>
options.UseSqlServer(Configuration.GetConnectionString("DefaultConnection")));
services.AddIdentity<ApplicationUser, IdentityRole>()
.AddEntityFrameworkStores<ApplicationDbContext>()
.AddDefaultTokenProviders();
...
services.AddMvc();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
...
app.UseAuthentication();
...
}
問題は、ユーザーが唯一の20〜30分間でログインしたままということです。ユーザーがログインすると(「Remember me」が選択されている)、ページをナビゲートしたり、ブラウザを再起動してもユーザーはログインしたままになります。したがって、認証Cookieが動作しているようです。しかし、20〜30分後にユーザーが自動的にログアウトされるか、またはクッキーの有効期限が切れると言わなければなりません(何が起こるか分かりません)。もう一度ログインすれば、もう一度ゲームが始まります。
私は、アプリケーションのCookieの有効期限を設定しようとしたが、これで問題が解決しない:
services.ConfigureApplicationCookie(options => {
options.ExpireTimeSpan = TimeSpan.FromDays(1); // Just shortens cookie expiration time, but still logs out users after 20-30 minutes.
});
それは20〜30分かかりますので、それはデフォルトのセッションタイムアウトのようになります。
services.AddSession(options =>
{
options.Cookie.Expiration = TimeSpan.FromDays(1); // This throws an error "Expiration cannot be set for the cookie defined by SessionOptions"
options.IdleTimeout = TimeSpan.FromDays(1); // This changes session sliding expiration time...
});
同じ実装がASP.NET Core 1.1で正常に機能しました。
はい私はこれを理解していますが、それはコア1.1または1.0で早く動作しました。彼らはこの機能を削除しましたか? 数日後にウェブサイトで引き続き使用することができました。 – Shaltukaz
残念ながら、いつ変更したのか、変更したのか分かりません。 –
ありがとうございます。 idletimeoutを60分に設定しようとしました。しかし、20分後にログアウトする。 ここでセッションタイムアウトを変更することはできません。また、認証プロセスはセッションに依存しません。 – Shaltukaz