我正在使用 Blazor 和 Windows 身份验证启动一个新站点,并且需要识别当前查看页面/组件的用户。
对于 Razor 页面,可以使用以下命令访问当前用户名Context.User.Identity.Name
,但这似乎在 Blazor 组件中不起作用。我尝试将 HttpContext 注入到组件中,但 Context 在运行时为空。
作为奖励,我最终希望将其合并到 Startup.cs 中,这样我只需要获取一次用户名,就可以为我的应用程序利用企业用户类(使用 EF Core)。针对该用例定制的答案也将受到赞赏。
让用户进入组件(页面就是一个组件)有三种可能性:
- Inject
IHttpContextAccessor
并从中访问HttpContext
进而User
;需要注册IHttpContextAccessor
in Startup.ConfigureServices
,通常使用AddHttpContextAccessor
。编辑:根据Microsoft 文档称,出于安全原因,您不得执行此操作.
- 注入一个
AuthenticationStateProvider
财产、电话GetAuthenticationStateAsync
并得到一个User
from it
- 将您的组件包裹在
<CascadingAuthenticationState>
组件,声明一个Task<AuthenticationState>
属性并调用它来获取User
(类似于#2)
在这里查看更多内容:https://learn.microsoft.com/en-us/aspnet/core/security/blazor.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)