当我在做用户LogOn时,我需要设置IsPersistent参数
SignInManager.SignIn(user, isPersistent, false);
在我的网站上,我具有更改当前用户的UserName的功能。如果UserName已更改我当前的coockies不实际,所以我需要LogOut用户,然后登录,但我不知道是用户检查remmember我与否。 我的网站如何知道会话是否持久? 或者有没有其他方法来处理更改UserName与coockies不同步?
更新
我用
_user = db.Users.FirstOrDefault(x => x.UserName == User.Identity.Name);
在我的基本控制器中跟踪当前用户。
Asp.Net Identity具有属性User.Identity.Name
但不具有User.Identity.Id
,并且此名称存储在coockies中的某处。有没有办法改变系统来跟踪名称而不是ID?
答案 0 :(得分:0)
每个用户都应该拥有某种用户ID。如果要将用户存储在数据库中,他们将拥有一个用户。如果需要,还可以在创建每个用户时为其添加自定义生成的ID。
然后,您可以使用该用户ID将用户与其Cookie相关联。此ID对用户是唯一的,并且在用户名更改时不会更改。使用这种方法可以完全避免您的问题。
<强>更新强>
您可以通过以下身份获取用户ID:
using Microsoft.AspNet.Identity;
int userId = User.Identity.GetUserId();
我需要看看你是如何创建cookie的,以便进一步帮助你。