Как передать значения в ASP.Net Core APiController с помощью Postman - PullRequest
0 голосов
/ 25 сентября 2019

Мой проект считывает несколько значений ключа из Почтальона и генерирует JWT enter image description here

Но я получаю Error415 после добавления атрибута [ApiController] к коду контроллера enter image description here

Вот код моего контроллера

[Route("api/[controller]")]
    //[ApiController]                  //When I uncomment this attribute, I get Error 415 on postman
    public class AuthController : Controller
    {
        private UserManager<ApplicationUser> _userManager;

        public AuthController(UserManager<ApplicationUser> usermanager)
        {
            _userManager = usermanager;
        }

        [HttpPost]
        [Route("login")]
        public async Task<IActionResult> Login(LoginModel model)
        {
            var user = await _userManager.FindByNameAsync(model.Username);
            if (user != null && await _userManager.CheckPasswordAsync(user, model.Password))
            {
                //get roles and claims of the logged in user
                var _roles = await _userManager.GetRolesAsync(user);
                var _claims = await _userManager.GetClaimsAsync(user);

                //add roles and claims from DB to JWT claims
                var claims = new List<Claim>();
                foreach (var role in _roles)
                {
                    claims.Add(new Claim(ClaimTypes.Role, role));
                }

                foreach (var claim in _claims)
                {
                    claims.Add(new Claim(claim.Type, claim.Value));
                }

                //security key
                string _securityKey = "A super secure key";
                //symmetric security key
                var _symmetricSecurityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(_securityKey));
                //signing credentials
                var _signingCredentials = new SigningCredentials(_symmetricSecurityKey, SecurityAlgorithms.HmacSha256Signature);

                //create token
                var _token = new JwtSecurityToken(
                    issuer: "issuer",
                    audience: "audience",
                    expires: DateTime.UtcNow.AddHours(1),
                    claims: claims,
                    signingCredentials: _signingCredentials
                    );
                return Ok(new JwtSecurityTokenHandler().WriteToken(_token));
            }
            return Unauthorized();
        }
    }

Какие изменения мне нужно внести, чтобы заставить его работать с добавлением [ApiController]?

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

Вы можете установить Content-Type: application / json на вкладке Header и в вашем контроллере установить Login ([ FromForm ] LoginModel модель) или Login ([ FromBody *)1006 *] Модель LoginModel) в зависимости от того, откуда вы хотите отправить данные.

1 голос
/ 25 сентября 2019

Вы можете либо использовать атрибут [FromForm], чтобы сообщить связующему модели, что он может читать данные из формы, либо вы можете изменить свой запрос и отправить тело запроса в виде json, просто переключитесь на raw в postman и установите тип в json.

...