Когда я использую DI в TokenAuthorizeFilter, _User всегда возвращает null. Не только _User, это всего лишь пример того, с чем я столкнулся.Я пробовал разные способы, но все еще не работает.
Сейчас я в замешательстве, пожалуйста, скажите мне, почему.Спасибо
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;
}
Извините, я не упомянул что-то в своем вопросе.Я вызываю метод в TokenAuthorizeFilter из другого класса, поэтому я определил его как статический.Теперь я изменил свой способ написания и нашел ответ на веб-сайте Microsoft.Большое спасибо.
https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/filters?view=aspnetcore-2.1#ifilterfactory-implemented-on-your-attribute