如何检查当前会话是否持久?
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 的,以便进一步帮助您。
当我进行用户登录时,我需要设置 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 的,以便进一步帮助您。