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

本文关键字:会话 是否 何检查 检查 | 更新日期: 2023-09-27 18:01:46

当我在做用户登录时,我需要设置IsPersistent参数

SignInManager.SignIn(user, isPersistent, false);

在我的网站我有改变当前用户的用户名的功能。如果UserName改变了我当前的cookie,那么我需要注销用户,然后再登录,但我不知道是否勾选了用户是否记得我。我怎么能在我的网站知道是会话持久与否?或者是否有其他方法来处理更改用户名而不是与cookie同步?

更新:

我使用

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

在我的基本控制器跟踪当前用户。Asp。Net Identity具有User.Identity.Name属性,但不具有User.Identity.Id属性,并且该名称存储在cookie中的某个位置。有没有办法改变系统来跟踪不是名字而是id ?

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

每个用户都应该有某种用户id。如果您将用户存储在数据库中,那么他们将已经拥有一个数据库。如果你愿意,你也可以添加一个自定义生成的id给每个用户,当他们被创建。

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

您可以像这样从标识获取用户id:

using Microsoft.AspNet.Identity;    
int userId = User.Identity.GetUserId();

我需要看看你是如何创建cookie的,以便帮助你进一步。