.net - 在 ASP.NET Core 3.0 .razor 页面中获取当前(登录)用户
问题描述
我正在使用西装外套服务器端应用程序测试水域,并尝试在 .razor 页面中获取登录用户。这个
UserManager.GetUserAsync(User)
在 .cshtml 视图中工作,但我找不到让它在 .razor 页面中工作的方法。没有可访问的“用户”属性。我将 IdentityUser 与扩展 IdentityUser 的 ApplicationUser 模型一起使用。我正在使用 AspNetCore 3.0 Preview 6。
解决方案
如果你用AuthorizeView
组件包围你的代码,你可以访问一个context
提供当前用户的对象。
<AuthorizeView>
<Authorized>
<h1>Hello, @context.User.Identity.Name!</h1>
<p>You can only see this content if you're authenticated.</p>
</Authorized>
<NotAuthorized>
<h1>Authentication Failure!</h1>
<p>You're not signed in.</p>
</NotAuthorized>
</AuthorizeView>
如果您不想使用这种方法,您可以请求一个名为 的级联参数authenticationStateTask
,该参数由CascadingAuthenticationState
.
@page "/"
<button @onclick="@LogUsername">Log username</button>
@code {
[CascadingParameter]
private Task<AuthenticationState> authenticationStateTask { get; set; }
private async Task LogUsername()
{
var authState = await authenticationStateTask;
var user = authState.User;
if (user.Identity.IsAuthenticated)
{
Console.WriteLine($"{user.Identity.Name} is authenticated.");
}
else
{
Console.WriteLine("The user is NOT authenticated.");
}
}
}
推荐阅读
- java - Azure SDK API 和 JAVA 使用 - 问题列出存储帐户中的所有容器和 BLOBS
- php - 获取错误 Network is unreachable for File_get_contents
- java - java.lang.NumberFormatException:对于输入字符串:“8999999999999995”
- node.js - 查询后 Node-mssql 挂起
- asp.net-core - Blazor 默认模板使用 .NET Core 2.1 SDK RTM 失败并出现 HTTP 错误 502.5
- node.js - Node.js - 护照和谷歌身份验证
- android - Android:形状可绘制对象中的填充有什么用?
- python - 如何修复 FileNotFoundError Errno 2 没有这样的文件或目录
- google-calendar-api - 使用 php 将事件添加到谷歌日历
- c++ - C++多重继承从文件保存对象读取两次