繁体   English   中英

如何在Asp.Net Core的Layout中使用与用户相关的数据?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM