ASP.NET Identity未显示全部声明及即时刷新方案咨询
ASP.NET Identity 声明更新问题解答
- 通过MVC页面的
OnGet方法调用SignInManager.RefreshSignInAsync再跳转的方案完全可行,不存在明显安全隐患。这本质是借助MVC能直接访问Identity服务的特性,主动更新用户认证Cookie里的声明集合,和重启VS后重新生成登录Cookie的逻辑一致。 - 需要注意几个细节:
- 调用
RefreshSignInAsync时,必须传入当前已通过认证的有效用户实例,比如通过await _userManager.GetUserAsync(User)获取,避免传入空值引发异常。 - 跳转目标尽量使用同站点内的相对路径,避免不必要的跨域跳转风险。
- 若使用Blazor Server,也可以通过注入
AuthenticationStateProvider结合后台服务调用SignInManager,但MVC页面跳转的方式更直接,适合快速落地解决问题。
- 调用
- 补充说明:你遇到的重启应用无效、重启VS才正常的情况,是因为应用重启时并未重新生成用户的认证Cookie,只有重启VS后用户重新触发登录流程,才会生成包含最新声明的Cookie;而
RefreshSignInAsync就是主动触发Cookie更新,把数据库里的最新声明同步到Cookie中。
内容的提问来源于stack exchange,提问作者David Thielen
相关产品推荐
相关产品推荐

