[英]How to fetch the value of token in ASP.NET Core MVC
我正在 ASP.NET Core MVC 和 API 中创建登录页面。 我获取数据
{
"UserId": 4,
"userName": "admin",
"EmailId": "admin@gmail.com",
"Password": "123",
"Role": "admin",
"Token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1bmlxdWVfbmFtZSI6IjQiLCJyb2xlIjoiYWRtaW4iLCJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dzLzIwMDgvMDYvaWRlbnRpdHkvY2xhaW1zL3ZlcnNpb24iOiJWMy4xIiwibmJmIjoxNjUzODA2NTE4LCJleHAiOjE2NTM5NzkzMTgsImlhdCI6MTY1MzgwNjUxOH0.ogp1MHNrKPvX7P2-nqbHJewOlgS0sSUNcKwADhOeIFc",
"Mobile": null,
"Address": null,
"created_at": "0001-01-01T00:00:00",
"updated_at": "0001-01-01T00:00:00"
}
[HttpPost]
public ActionResult Index(Login model)
{
HttpResponseMessage response = GlobalVariables.WebApiClient.PostAsJsonAsync("Users", model).Result;
IEnumerable<Login> error = null;
if (response.IsSuccessStatusCode)
{
string data = response.Content.ReadAsStringAsync( ).Result;
// Session["TokenNumber"] = data;
}
else
{
error = Enumerable.Empty<Login>();
ModelState.AddModelError(string.Empty, "Server error. Please contact administrator.");
}
return View(model);
}
它显示所有数据。 但我只需要从该数据中获取Token
值 - 而不是所有值。
如何只读取令牌? 它应该存储在会话中。
在 C# 中使用 JSON 的一个好方法是使用JSON.NET
如何使用它的一个例子:
public class Response
{
public Response(string rawResponse)
{
var obj = JObject.Parse(rawResponse);
UserId = int.Parse(obj["UserId"].ToString());
userName = obj["userName"].ToString();
//...
Token = obj["Token"].ToString();
//...
}
public int UserId { get; set; }
public string userName { get; set; }
public string EmailId { get; set; }
public String Password { get; set; }
public string Role { get; set; }
public string Token { get; set; }
// other properties
}
// Use
private void Run()
{
string data = response.Content.ReadAsStringAsync().Result;
Response response = new Response(data );
Console.WriteLine("Token: " + response.Token);
}
这取决于您的身份验证,您使用的是 JWT 吗? 为什么您不在标头属性中发送令牌?
如果您将此数据发布到 Index 方法,则该令牌应存在于 model.Token 中,
使用最佳实践,您需要使用登录方法来验证用户,然后为用户返回一个令牌,以便在每个请求的标头中使用,并使用 AuthorizeAttribute 您应该授权用户
如果您使用的是 .NET Core 和令牌身份验证,请使用
var _bearer_token = Request.Headers[HeaderNames.Authorization].ToString()
原答案: https ://stackoverflow.com/a/61395803/3559462
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.