C# User.Identity空指针异常与SPA(Angular)visual studio Angular模板
我正在使用visual studio angular模板创建项目,试图访问用户声明C# User.Identity空指针异常与SPA(Angular)visual studio Angular模板,c#,asp.net,asp.net-core,asp.net-identity,visual-studio-templates,C#,Asp.net,Asp.net Core,Asp.net Identity,Visual Studio Templates,我正在使用visual studio angular模板创建项目,试图访问用户声明user.Identity.Name。由于用户为null,因此获取null指针异常 我已经按照这里的指示做了 它使用AddApiAuthorization、AddIdentityServerJwt、OIDCConfiguration控制器 Startup.cs services.AddIdentityServer() .AddApiAuthorization<Applicat
user.Identity.Name
。由于用户为null,因此获取null指针异常
我已经按照这里的指示做了
它使用AddApiAuthorization、AddIdentityServerJwt、OIDCConfiguration控制器
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");
}
});
Startup.cs
services.AddIdentityServer()
.AddApiAuthorization不是用户为空,而是HttpContext为空
HttpContext在构造函数中被调用,然后还没有实例化HttpContext,因为当客户端连接到此控制器时会发生这种情况。将代码移动到控制器中的方法中,您将发现HttpContext已设置
[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;
}
}