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

本文关键字:配置文件 数据 最简单 方法 用户 经过 会话 刷新 身份验证 | 更新日期: 2023-09-27 18:35:30

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

目前,如果更改了设置,用户必须手动注销并重新登录,然后更改才会生效,这被证明是不可取的。

刷新用户当前会话配置文件的最直接方法是什么?如果这需要注销/登录才能生效,如何使用标识 2 对其进行编码?帐户控制器中不包含几个页面,我不确定如何在帐户控制器中访问应用程序用户管理器和应用程序登录管理器。在帐户控制器之外复制这些对象似乎不对,也许这是可以接受的?

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

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

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

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

不包含几个页面,我不确定如何在帐户控制器中访问应用程序用户管理器和应用程序登录管理器。在帐户控制器之外复制这些对象似乎不对,也许这是可以接受的?

在我看来,在AccountController之外使用ApplicationUserManagerApplicationSignInManager不是一个好主意。如果您被迫这样做,则可能是您的应用程序体系结构有问题。如果您使用的是帐户控制器,它应负责用户帐户处理的所有功能(单一责任原则)