В пользовательском атрибуте авторизации контекст не задан - PullRequest
0 голосов
/ 01 июля 2019

Я использовал JWT для своего проекта. Я создал собственный атрибут авторизации, но AuthorizationFilterContext имеет значение null. Когда я использую то же самое в контроллере, у меня есть доступ к контексту, но в атрибуте контекст имеет значение null.

Вот мой контроллер для входа в систему:

public async Task<IActionResult> Login([FromBody] LoginViewModel login)
    {
        if (!ModelState.IsValid)
        {
            return BadRequest(ModelState);
        }

        var identity = await GetClaimsIdentity(login.Username, login.Password);
        if (identity == null)
        {
            return BadRequest("username or password is wrong");
        }

        var response = new
        {

            id = identity.Claims.Single(c => c.Type == "id").Value,
            auth_token = await _jwtFactory.GenerateEncodedToken(login.Username, identity),
            expires_in = (int)_jwtOptions.ValidFor.TotalSeconds,
        };
        //string UserId = User.FindFirst("id").Value;


        return Ok(JsonConvert.SerializeObject(response, _serializerSettings));
    }

и это атрибут:

public class CustomCheckPermissionAttribute : AuthorizeAttribute, IAuthorizationFilter
{
    private int _permissionId = 0;

    public CustomCheckPermissionAttribute(int _permissionId)
    {
        this._permissionId = _permissionId;
    }

    public void OnAuthorization(AuthorizationFilterContext filterContext)
    {
        var x = filterContext.HttpContext.User.FindFirst("id").Value;
    }
}
...