我已经为身份2的AspNetUsers表添加了几个自定义列。我使用MVC5和C#。有几列包含对网站如何处理用户很重要的数据,并且有一个设置页面允许用户更改这些设置。
目前,如果更改设置,用户必须手动注销并重新登录才能使更改生效,这证明是不合适的。
为当前会话刷新用户个人资料的最简单方法是什么?如果这需要logout / login生效,如何使用Identity 2进行编码? AccountController中不包含几页,我不知道如何访问AccountController中的ApplicationUserManager和ApplicationSignInManager。在AccountController之外复制这些对象似乎没有问题,也许这是可以接受的?
答案 0 :(得分:3)
如果唯一可以更改这些设置的人是用户本身,则可以在修改这些设置时自动为此用户执行SignOut
和SignIn
。基本上所有这些都由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
之外使用ApplicationSignInManager
和AccountController
并不是一个好主意。如果您被迫这样做,可能是您的应用程序架构出现问题。如果您使用的是帐户控制器,它应该负责用户帐户处理的所有功能(单一责任原则)