Я занимаюсь разработкой веб-приложения Net Core 3.0 И веб-API Net Core 3.0.Веб-API имеет атрибут [Authorize]
на всех конечных точках, кроме login
, и отправляет мне JWT при успешном входе в систему.НО, я не понимал, как сохранить его в моем веб-приложении и использовать его для запроса чего-либо к моему API.
То, что я сейчас делаю в своем веб-приложении, выглядит следующим образом:
public async Task<ClaimsPrincipal> Login(LoginViewModel model)
{
var response = await Client.PostAsJsonAsync("user/login", model);
// Client is HttpClient
try
{
response.EnsureSuccessStatusCode();
var token = await response.Content.ReadAsAsync<JsonWebToken>();
if (!token.Success)
return null;
var claims = new List<Claim>
{
new Claim(ClaimTypes.Email, token.Email),
...
};
// What do I Have to do with token.Token?
var identity = new ClaimsIdentity(claims, CookieAuthenticationDefaults.AuthenticationScheme);
var principal = new ClaimsPrincipal(identity);
return principal;
}
catch (Exception e)
{
Debug.WriteLine(e);
return null;
}
}
тогда мой [HttpPost]
метод при входе в систему (/ User / Login) делает следующее:
var response = await Login(model)
await HttpContext.SignInAsync(response);
и мой Startup.cs
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(o => o.LoginPath = "/User/Login");
с
app.UseAuthentication();
in Configure
Так что теперь я могу войти в систему, SignOut с помощью файлов cookie, но я не знаю, как сохранить / использовать JWT для вызова моего API.Как я могу указать токен для моего клиента?
Пример кода был бы очень полезен.