2016-08-24 1 views
2

私はRemember Meオプション付きのサインインページを持っています。私はクッキーの有効期限を覚えておいて、1ヶ月と言っています。ASPで永続的および非永続的なCookie用に異なるExpireTimeSpanを構成する方法.Net Identity Core

私はCookieAuthenticationOptions.ExpireTimeSpanプロパティを使用することができましたが、RememberMeオプションの "only"では機能しません。

現在の閲覧セッション(ユーザーがRememberMeオプションを選択しなかった場合)で、サインインしてから30分後など、ユーザーが数分間サインインしたがります。この場合、ExpireTimeSpan = TimeSpan.FromMinutes(30)を使用します。

RememberMeが選択されていて選択されていない場合、2つの異なる設定を構成するために "RememberMeDuration"のような設定ができますか? - 外出先(少なくともそのような小さな機能のための新しいミドルウェアの全体を作成しないでください)

答えて

4

絶対に有効期限を設定すると、30日間のRemember Me機能を実装できます。 Identityを使用する場合は、パスワードの後に​​SignInAsyncの実行中にExpiresUtcを設定します。カスタマイズされたパスワードチェックが成功した後

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) }); 
} 

アイデンティティなしクッキーミドルウェアが使用される場合は、ExpiresUtcを設定します。ドキュメントから

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

IsPersistentとExpiresUtcは

+0

こんにちはbvoleti相互に排他的です。 CheckPasswordAsyncとSignInAsyncを使用した回避策をありがとう。しかし、ExpiresUtcを使用すると、IsPersistentが失われてしまい、その効果でスライドの有効期限が切れてしまいます。 これは私が最後に選択したものです。なぜなら、スライド有効期限をその場で活発に保つことができる何かを試したいからです。 –

関連する問題