Asp.Net Identityを使用して、アプリの承認を制御します。次に、これを行う必要があります。ユーザーが30分以内に操作しない場合は、ログインで「isPersistent」チェックボックスが選択されていないときにログインページにジャンプします。また、「isPersistent」チェックボックスを選択した場合、Cookieの有効期限を14日間に設定します。 Startup.Auth.csを次のように変更して、これを実行しようとしています。
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
SlidingExpiration = true,
CookieName = WebHelpers.ConstStrings.AUTHCOOKIESNAME
});
}
そして、このようなサインインコード:
private async Task SignInAsync(User user, bool isPersistent)
{
AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);
var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);
if (isPersistent)
{
AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = isPersistent }, identity);
}
else
{
AuthenticationManager.SignIn(new AuthenticationProperties() { ExpiresUtc = new DateTimeOffset(DateTime.UtcNow.AddMinutes(30)) }, identity);
}
}
しかし、ユーザーがisPersistentチェックボックスを選択しない場合、Cookieの有効期限は既に「セッション」であり、現在の時刻に30分を足したものではありません。
Afterのようなコードを使用した場合のCookieのステータスのため、「remember me」チェックボックスは機能しません。
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
LoginPath = new PathString("/Account/Login"),
ExpireTimeSpan = TimeSpan.FromMinutes(30),
SlidingExpiration = true,
CookieName = WebHelpers.ConstStrings.AUTHCOOKIESNAME
});
これを使って...
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
ExpireTimeSpan = TimeSpan.FromHours(1),
});
}
同じ問題があり、このコードは(Startup.csファイル内で)私のために働きました。
_services.Configure<IdentityOptions>(options =>
{
options.Cookies.ApplicationCookie.ExpireTimeSpan = TimeSpan.FromDays(9999);
});
_
これにより、永続的なCookieにおよそ27年(または無期限)が追加されます。
NB:有効期限を短くしたい場合は、TimeSpan.FromMinutes(1);
を1分間、TimeSpan.FromSeconds(30);
を30秒などで使用できます。