[英]How to use user related data at Layout in Asp.Net Core?
我有一个用Asp.Net Core编写的网站,我想使用与登录用户有关的其他数据。 因此,每次用户打开页面时,都会加载此数据。 问题是我需要_Layout.cshtml中的数据,所以我不能使用控制器,也不能使用如下代码:
@{
var user = await UserManager.GetUserAsync(User);
var data = await repository.LoadDataAsync(User?.Id);
//Data usage...
}
因为每次用户打开具有此布局的页面时都会调用它。 我觉得应该有一个简单的解决方案,但我找不到。 也许我应该使用缓存?
这应该不难。
您可以将UserManager<TUser>
注入页面并按如下方式使用。
@inject UserManager<TheUser> userManager;
但是,您想确保在尝试执行任何操作之前,用户实际上已登录。
因此,您还可以使用SignInManager<TUser>
注入页面。
@inject SignInManager<TheUser> signInManager;
@
{
var user=await userManager.FindByNameAsync(User.Identity.Name);
}
if(user!=null && await signInManager.IsSignedInAsync(user)){
//Do other stuffs with the user.
}
请注意, User
属性:
获取与执行操作关联的用户的ClaimsPrincipal。
我猜它可以通过Microsoft.AspNetCore.Mvc
获得。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.