繁体   English   中英

带有 SPA(Angular) Visual Studio 角度模板的 User.Identity 空指针异常

[英]User.Identity null pointer exception with SPA(Angular) visual studio angular template

我正在使用 Visual Studio angular 模板来创建项目,尝试访问用户声明User.Identity.Name 由于用户为空,所以得到空指针异常。

我已按照此处的说明进行操作https://docs.microsoft.com/en-us/aspnet/core/security/authentication/identity-api-authorization?view=aspnetcore-3.1

它使用 AddApiAuthorization、AddIdentityServerJwt、OidcConfigurationController

Startup.cs

services.AddIdentityServer()
                .AddApiAuthorization<ApplicationUser, ApplicationDbContext>()
                .AddProfileService<ProfileService>();
            
            services.AddAuthentication()
                .AddIdentityServerJwt();

 app.UseAuthentication();
            app.UseIdentityServer();
            app.UseAuthorization();

 app.UseSpa(spa =>
            {
                spa.Options.SourcePath = "ClientApp";
                if (env.IsDevelopment())
                {
                    spa.UseAngularCliServer(npmScript: "start");
                }
            });

在基本控制器中,我试图访问用户声明

    [Authorize]
    public abstract class BaseController : ControllerBase
        {
           
            private readonly UserManager<ApplicationUser> _userManager;
            public BaseController()
            {
var identity = HttpContext.User.Identity as ClaimsIdentity;
                var user =  _userManager.FindByNameAsync(User.Identity.Name).Result;
                
            }
        }

从身份服务器登录成功后,用户为空。 basecontroller 装饰有[Authorize]授权后断点工作

在此处输入图片说明

不是 User 为空,而是 HttpContext 为空。

在构造函数中调用 HttpContext 并且还没有实例化 HttpContext ,因为当客户端连接到此控制器时会发生这种情况。 将您的代码移到控制器内的方法中,您会发现 HttpContext 已设置。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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