【发布时间】:2020-01-25 04:08:20
【问题描述】:
但是在我将[ApiController] 属性添加到控制器代码后,我得到了 Error415
这是我的控制器代码
[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] 需要进行哪些更改?
【问题讨论】:
-
ApiController 默认使用 Json。您需要明确从何处绑定数据。由于正在发送表单数据,因此需要使用
[FromForm]属性。即Task<IActionResult> Login([FromForm]LoginModel model) -
同时使用
[HttpPost("login")]而不是两个属性。
标签: c# asp.net asp.net-core asp.net-web-api postman