如何检查当前会话是否持久?

How to check is the current session is persistent or not?

当我进行用户登录时,我需要设置 IsPersistent 参数

SignInManager.SignIn(user, isPersistent, false);

在我的站点上,我具有更改当前用户的用户名的功能。如果 UserName 已更改我当前的 coockies 使不实际,所以我需要注销用户然后登录,但我不知道是否已检查用户是否记得我。 我如何在我的站点中知道会话是否持久? 或者有没有其他方法来处理更改用户名而不是用 coockies desinchron?

更新:

我用

_user = db.Users.FirstOrDefault(x => x.UserName == User.Identity.Name);

在我的 Base Controller 中跟踪当前用户。 Asp.Net 身份有 属性 User.Identity.Name 但没有 User.Identity.Id,这个名字存储在 coockies 的某个地方。有什么方法可以更改系统以跟踪 ID 而不是名称?

每个用户都应该有某种用户 ID。如果您将用户存储在数据库中,他们将已经拥有一个。如果您愿意,还可以在创建每个用户时为每个用户添加一个自定义生成的 ID。

然后您可以使用该用户 ID 将用户与其 cookie 相关联。这个id对用户来说是唯一的,不会随着用户名的改变而改变。使用这种方法将完全避免您的问题。

更新

您可以像这样从身份中获取用户 ID:

using Microsoft.AspNet.Identity;    

int userId = User.Identity.GetUserId();

我需要了解您是如何创建 cookie 的,以便进一步帮助您。