如何在使用asp.net Identity关闭浏览器后保留登录信息?

时间:2015-12-22 02:50:59

标签: c# asp.net asp.net-mvc asp.net-identity

使用ASP.NET身份时,我想在用户登录我的网站时尽可能长时间地保留登录信息,这样用户在重新打开浏览器时无需再次登录(就像github.com和stackoverflow.com)。当我登录github时,它会持续很多天我的信息,因此我不需要每天都重新登录。是否有任何方法可以使用ASP.NET Identity实现此功能?

2 个答案:

答案 0 :(得分:3)

只需将适当的值传递给SignIn方法的isPersistent参数:

SignInManager.PasswordSignInAsync("email@id.com", "password", isPersistent: true, shouldLockout: false);

SignInManager.SignInAsync(applicationUser, isPersistent: true, rememberBrowser: false);

isPersistent参数用于控制是否应保留用户的身份验证cookie。

rememberBrowser参数用于双因素身份验证:记住的浏览器可以直接使用密码登录。

答案 1 :(得分:0)

您需要在IsPersistent上设置AuthenticationProperties属性,以便在浏览器关闭后保持登录状态。已注册的方法user.GenerateUserIdentityAsync生成要在Cookie中刷新的新ClaimsIdentity

private async Task<SignInStatus> SignIn(User user, bool isPersistent)
{
    await SignInAsync(user, isPersistent);
    return SignInStatus.Success;
}

public async Task SignInAsync(User user, bool isPersistent)
{
    var userIdentity = await user.GenerateUserIdentityAsync(UserManager);
    AuthenticationManager.SignIn(
       new AuthenticationProperties
        {
           IsPersistent = isPersistent
        },
        userIdentity
    );
}