小编c0y*_*teX的帖子

IHttpContextAccessor.HttpContext.User.Identity 显示 CurrentUserService 服务中的所有空属性

我正在尝试使用Jason Taylor 的 Clean Architecture Template,这个模板使用 NSwag 自动创建一个 TypeScript 客户端(Angular),但我不需要创建一个 TS 客户端,所以我的主要目标是用 Razor Pages 替换它。我已经能够做到这一点,但当CurrentUserService被实例化时,我遇到了问题,它应该在这一行中设置 UserId:

UserId = httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
Run Code Online (Sandbox Code Playgroud)

这是完整的CurrentUserService

using CleanREC0.Application.Common.Interfaces;
using Microsoft.AspNetCore.Http;
using System.Security.Claims;

namespace CleanREC0.WebUI.Services
{
    public class CurrentUserService : ICurrentUserService
    {
        public CurrentUserService(IHttpContextAccessor httpContextAccessor)
        {
            UserId = httpContextAccessor.HttpContext?.User?.FindFirstValue(ClaimTypes.NameIdentifier);
        }

        public string UserId { get; }
    }
}
Run Code Online (Sandbox Code Playgroud)

第一次甚至 HttpContext 为,这很好,因为一切都在初始化,但随后的调用总是在所有httpContextAccessor.HttpContext.User.Identity属性上返回null,用户显示了一个身份,但它的所有属性和声明都是nullYield no results,即使用户正确登录。

这是我对模板所做的事情的列表:

  • 摆脱了NSwag和所有与TypeScript相关的东西 …

c# identity dependency-injection httpcontext clean-architecture

4
推荐指数
1
解决办法
3030
查看次数