最简单的方法来刷新当前会话的经过身份验证的用户配置文件数据

时间:2014-12-27 20:10:31

标签: c# asp.net-mvc asp.net-identity-2

我已经为身份2的AspNetUsers表添加了几个自定义列。我使用MVC5和C#。有几列包含对网站如何处理用户很重要的数据,并且有一个设置页面允许用户更改这些设置。

目前,如果更改设置,用户必须手动注销并重新登录才能使更改生效,这证明是不合适的。

为当前会话刷新用户个人资料的最简单方法是什么?如果这需要logout / login生效,如何使用Identity 2进行编码? AccountController中不包含几页,我不知道如何访问AccountController中的ApplicationUserManager和ApplicationSignInManager。在AccountController之外复制这些对象似乎没有问题,也许这是可以接受的?

1 个答案:

答案 0 :(得分:3)

如果唯一可以更改这些设置的人是用户本身,则可以在修改这些设置时自动为此用户执行SignOutSignIn。基本上所有这些都由SignInManager.SignInAsync方法

完成

用户修改设置后,您可以执行以下操作:

var user = await UserManager.FindByIdAsync(User.Identity.GetUserId());
if (user != null)
{
   await SignInManager.SignInAsync(user, isPersistent: false, rememberBrowser: false);
}
  

AccountController中没有包含几页,我不知道如何访问AccountController中的ApplicationUserManager和ApplicationSignInManager。在AccountController之外复制这些对象似乎没有问题,也许这是可以接受的?

我认为在ApplicationUserManager之外使用ApplicationSignInManagerAccountController并不是一个好主意。如果您被迫这样做,可能是您的应用程序架构出现问题。如果您使用的是帐户控制器,它应该负责用户帐户处理的所有功能(单一责任原则)