When I am using the DI in TokenAuthorizeFilter, the _User always return null.Not only the _User, this is only an example of what I am encountered. I've tried different ways but still doesn't work.
I'm confused now, please tell me why. Thank you
public class BaseAuthorizeFilter : IAuthorizationFilter, IActionFilter
{
public static ClaimsIdentity _User;
public static IHttpContextAccessor _accessor;
public BaseAuthorizeFilter(UserResolverService userService, IHttpContextAccessor accessor)
{
_User = userService.GetUser();
_accessor = accessor;
}
}
...
UserResolverService.cs
public class UserResolverService : IUserResolverService
{
private readonly IHttpContextAccessor _context;
public UserResolverService(IHttpContextAccessor context)
{
_context = context;
}
public ClaimsIdentity GetUser()
{
return _context.HttpContext.User.Identity as ClaimsIdentity;
//await
}
}
public interface IUserResolverService
{
ClaimsIdentity GetUser();
}
TokenAuthorizeFilter.cs
public class TokenAuthorizeFilter : BaseAuthorizeFilter
{
var identity = _User;
}
Sorry, I didn’t mentioned something in my question. I am calling a method in TokenAuthorizeFilter from another class so I defined it as static. Now I change my way writing it, and I found the answer from Microsoft’s website. Thanks a lot.
_Userthat's null, or also_accessor?_accessorin Startup.cs: services.AddSingleton<TokenAuthorizeFilter>(); Do you mean this?BaseAuthorizeFiltershould not be a singleton.services.AddSingleton<TokenAuthorizeFilter>();?