2

私は、オプションを覚えているサインイン ページを持っています。私は Cookie の有効期限をかなり長く、たとえば 1 か月に設定したいと考えています。このプロパティを使用できますCookieAuthenticationOptions.ExpireTimeSpanが、RememberMe オプションに対して「のみ」機能しません。ユーザーが現在のブラウジング セッションで、サインイン後 30 分など、数分間サインインする必要があります (ユーザーが [RememberMe] オプションを選択しなかった場合)。この場合、 を使用しますExpireTimeSpan = TimeSpan.FromMinutes(30)

「RememberMeDuration」のようなものを構成して、RememberMe が選択されている場合と選択されていない場合の 2 つの異なる設定を構成する方法はありますか? - すぐに使用できます (少なくとも、そのような小さな機能のためにまったく新しいミドルウェアを作成するわけではありません)。

4

1 に答える 1

4

絶対有効期限を使用して、Remember Me (たとえば 30 日間) 機能を実装できます。Identity を使用する場合は、パスワード チェックの後ExpiresUtc中に設定します。SignInAsync

var au = new ApplicationUser() { Email = model.Email };
var r1 = await _userManager.CheckPasswordAsync(au, model.Password);
if (r1)
{
    await _signInManager.SignInAsync(au, new AuthenticationProperties() { ExpiresUtc = DateTime.UtcNow.AddDays(30) });
}

ID なしの Cookie ミドルウェアが使用されている場合は、カスタマイズされたパスワードのチェックが成功した後に ExpiresUtc を設定します。

ドキュメントから:

await HttpContext.Authentication.SignInAsync("MyCookieMiddlewareInstance", principal, new AuthenticationProperties
    {
        ExpiresUtc = DateTime.UtcNow.AddDays(30)
    });

IsPersistentExpiresUtc相互に排他的です。

于 2016-08-24T03:53:36.367 に答える