.net core 學習小結之 PostMan報415


  • 首先415的官方解釋是:對於當前請求的方法和所請求的資源,請求中提交的實體並不是服務器中所支持的格式,因此請求被拒絕。
  • 也就是說我所准備的數據格式並不是后台代碼使用的數據格式
  • 后台代碼如下
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.Linq;
    using System.Threading.Tasks;
    using Microsoft.AspNetCore.Mvc;
    
    namespace JwtAuth.Controllers
    {
        using System.Security.Claims;
        using Microsoft.Extensions.Options;
        using Microsoft.IdentityModel.Tokens;
        using Microsoft.AspNetCore.Authentication.JwtBearer;
        //添加dll的引用 Nuget Microsoft.AspNetCore.Authentication.JwtBearer;
        using System.IdentityModel.Tokens.Jwt;
         [Route("api/[controller]")]
        public class AuthController : Controller
        {
            public JwtSettings settings;
            public AuthController(IOptions<JwtSettings> jwtsettings)
            {
                settings = jwtsettings.Value;
            }
            [HttpPost]
            public IActionResult Token([FromBody]LoginInfo model)
            {
                if (ModelState.IsValid)
                {
                    if (model.username == "cyao" && model.password == "123456")
                    {
                        //用戶合法情況
                        //添加授權信息
                        var claims = new Claim[] { new Claim(ClaimTypes.Name, "cyao"), new Claim(ClaimTypes.Role, "admin") };
                        var key = new SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes(settings.SecretKey));
                        var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
                        var token = new JwtSecurityToken(
                            settings.Issuer,
                            settings.Audience,
                            claims,
                            DateTime.Now,
                            DateTime.Now.AddMinutes(30),//過期時間
                            creds);
                        return Ok(new { token = new JwtSecurityTokenHandler().WriteToken(token) });
                    }
                }
                return BadRequest();
            }
        }
        public class LoginInfo
        {
            [Required]
            public string username { get; set; }
            [Required]
            public string password { get; set; }
        }
    }
  • 使用POSTMan如何構造一個
    [FromBody]?錯誤示例 (圖1.0)
  • 正確示例如下圖2.0(圖2.0)
  • 或者使用圖1.0的配置將后台代碼參數的標簽改成[FromForm]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM