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

时间:2016-08-10 11:00:39

标签: c# asp.net asp.net-mvc session session-cookies

当我在做用户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?

1 个答案:

答案 0 :(得分:0)

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

然后,您可以使用该用户ID将用户与其Cookie相关联。此ID对用户是唯一的,并且在用户名更改时不会更改。使用这种方法可以完全避免您的问题。

<强>更新

您可以通过以下身份获取用户ID:

using Microsoft.AspNet.Identity;    

int userId = User.Identity.GetUserId();

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