如何检查当前会话是否持久
本文关键字:会话 是否 何检查 检查 | 更新日期: 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的,以便帮助你进一步。