簡體   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