如何在 Razor 页面中检索声明值

How retrieve the claim value inside a Razor page

我在系统记录时设置了一些声明值。

public async Task<IActionResult> Login(string txtUserName, string txtPassword)
{
   string username = txtUserName;
   var claims = new List<Claim>
   {
     new Claim("username",username)
   };
}

现在我想访问 Razor 页面中的声明值。我尝试在我的 Razor 页面中使用 @((ClaimsIdentity) User.Identity).GetSpecificClaim("username") 的流动代码行进行访问,但它不起作用。

<div class="container-nav">
    <a class="navbar-brand"><p>Website name</p></a>
    <div class="profile">
       <i class="fas fa-envelope"></i>
                   
       <a class="navbar-brand"><p>@((ClaimsIdentity)User.Identity).GetSpecificClaim("username")</p></a>


    </div>

</div>

您可以在后端向 HttpContext.User 添加声明,如下所示:

public async Task<IActionResult> Login(string txtUserName, string txtPassword)
{
    string username = txtUserName;
    var claims = new List<Claim>
    {
        new Claim("username",username)
    };
    var appIdentity = new ClaimsIdentity(claims);
    HttpContext.User.AddIdentity(appIdentity); 

    //....
}

然后像下面这样在前端获取声明:

@User.FindFirst("username").Value