Jwt 如何使用basic auth asp.net从邮递员处发送和获取用户名和密码参数以进行编码
我正在尝试制作api 这是我获取授权令牌的登录名Jwt 如何使用basic auth asp.net从邮递员处发送和获取用户名和密码参数以进行编码,jwt,postman,asp.net-core-webapi,express-jwt,Jwt,Postman,Asp.net Core Webapi,Express Jwt,我正在尝试制作api 这是我获取授权令牌的登录名 public IActionResult Login(string Username,string Password) { if (ModelState.IsValid) { string user = GetAuth(Username, Password); if (user == null) {
public IActionResult Login(string Username,string Password)
{
if (ModelState.IsValid)
{
string user = GetAuth(Username, Password);
if (user == null)
{
return Unauthorized();
}
var claims = new[]
{
new System.Security.Claims.Claim(JwtRegisteredClaimNames.Sub, Username),
new System.Security.Claims.Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new System.IdentityModel.Tokens.Jwt.JwtSecurityToken
(
issuer: "" ,
audience: "",//appsettings.json içerisinde bulunan audince değeri
claims: claims,
expires: DateTime.UtcNow.AddDays(30), // 30 gün geçerli olacak
notBefore: DateTime.UtcNow,
signingCredentials: new Microsoft.IdentityModel.Tokens.SigningCredentials(new Microsoft.IdentityModel.Tokens.SymmetricSecurityKey(System.Text.Encoding.UTF8.GetBytes("aaa wssadsa adsad sa rasd as")),//appsettings.json içerisinde bulunan signingkey değeri
Microsoft.IdentityModel.Tokens.SecurityAlgorithms.HmacSha256)
) ;
Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true;
return Ok(new { token = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler().WriteToken(token) });
}
else
{
return BadRequest();
}
}
现在我想用postman测试一下,在授权选项卡的postman界面中,我输入用户名和密码,然后点击send buton,它调用我的函数,但用户名和密码为空
我犯了什么错
您在这里混合和匹配概念。基本身份验证不仅仅意味着“使用用户名和密码”;它是一种特殊的身份验证方案,是授权令牌。例如,正如您可以通过发送头(如
Authorization:Bearer{token}
)来使用auth令牌授权API调用一样,您也可以通过Authorization:Basic{base64 encode user:pass}
进行授权
你在这里做的是登录。换句话说,您可以先执行此操作以返回auth令牌,该令牌随后将通过
Authorization:Bearer{token}
传递。在这里,用户名和密码值需要来自请求正文,而不是授权
标题。我不想使用查询字符串…而不是mysite.com/login?username=…xxxx这我只想调用mysite.com/login我该怎么做?发帖子并将凭据包含在请求正文中,就像我说的,你有解决办法吗?同样的要求