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