web-dev-qa-db-ja.com

MVC5でOwinContextのタイムアウトを設定する方法

ユーザーがWebサイトにアクセスし、データベースに保存されている資格情報を入力すると、認証が作成されます。

タイムアウトをどのように設定しますか? MVC5を使用します。

私の認証は次のようになります:

        var claims = new List<Claim>();
        claims.Add(new Claim("UserId", user.UserID.ToString()));
        claims.Add(new Claim(ClaimTypes.Name, user.FirstName + " " + user.LastName));
        claims.Add(new Claim(ClaimTypes.Email, user.Email));
        claims.Add(new Claim(ClaimTypes.NameIdentifier, user.UserID.ToString()));
        var id = new ClaimsIdentity(claims, DefaultAuthenticationTypes.ApplicationCookie);

        var ctx = Request.GetOwinContext();
        var authenticationManager = ctx.Authentication;
        authenticationManager.SignIn(id); 
16
DavidJS

固定の有効期限を設定する方法は、次のようにStartup.Auth.csファイルにExpireTimeSpanプロパティを設定することです。

// Enable the application to use a cookie to store information for the signed in user
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
    AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
    LoginPath = new PathString("/Account/Login"),
    ExpireTimeSpan = TimeSpan.FromDays(2)
});

また、Cookieを永続化するように設定する必要があることに注意してください。コードでは、ユーザー名とパスワードに加えてブール値を渡してから、変更する必要があります

authenticationManager.SignIn(id); 

することが

authenticationManager.SignIn(new AuthenticationProperties { IsPersistent = rememberMe }, id); 
29
Dave

以下では、Startup.csを使用する必要はありません。

AuthenticationManager.SignIn(new AuthenticationProperties() { IsPersistent = true, ExpiresUtc = DateTime.UtcNow.AddHours(1), }, id);
4
kamalpreet