You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 17:34:56