我在 aspnetusers 表中添加了用户定义的列hasAvatar
。但是,当我在_LoginPartial.cshtml
中时,我如何获取当前用户的信息?
我想获得这样的信息
@if (myUser(User).hasAvatar==true)
{
<p>..avatar</p>
}
else
{
<p>please login</p>
}
使用视图组件:
public class LoginViewComponent : ViewComponent
{
private readonly UserManager<ApplicationUser> _userManager;
public LoginViewComponent(UserManager<ApplicationUser> userManager)
{
_userManager = userManager ?? throw new ArgumentNullException(nameof(userManager));
}
public async Task<IViewComponentResult> InvokeAsync()
{
var user = await _userManager.GetUserAsync(HttpContext.User).ConfigureAwait(false);
return View(user);
}
}
然后,将_LoginPartial.cshtml
的内容移动到 ViewsSharedComponentsLoginDefault.cshtml
。添加一个 ApplicationUser
的@model
声明,然后就可以在 ApplicationUser
上使用 Model.hasAvatar
或任何其他属性。
最后,在您之前渲染_LoginPartial
的位置,将该代码替换为:
@await Component.InvokeAsync("Login");
您可以在视图中注入UserManager
并从中获取当前用户:
@inject UserManager<User> UserManager
@{
var myUser = await UserManager.GetUserAsync(User);
}
您还可以通过以下方式检查当前请求是否经过身份验证:
@User.Identity.IsAuthenticated