Как хранить токен у повара ie? - PullRequest
1 голос
/ 23 марта 2020

У меня есть API, который возвращает мне токен, и, используя этот токен, я могу делать больше запросов к API, сейчас я храню токен в сеансе, однако я считаю, что использование сеанса лишает цели использования токена, поэтому Мне интересно, как я могу хранить токен у повара ie? Ниже приведен код, где я получаю токен и записываю его в сеанс: -

public async Task<string> GetToken(bool tokenExpired)
{
    if (_context.HttpContext.Session.GetString("token") != null && tokenExpired == false)
    {
        return _context.HttpContext.Session.GetString("token");
    }

    var authClient = _httpClientFactory.CreateClient("Auth");

    var dict = new Dictionary<string, string>
    {
        { "grant_type", "client_credentials" },
        { "client_id", "my_client_id" },
        { "client_secret", "my_client_secret" }
    };
    var res = await authClient.PostAsync(authClient.BaseAddress, new FormUrlEncodedContent(dict));

    if (res.StatusCode == HttpStatusCode.OK)
    {
        var authentication = JsonConvert.DeserializeObject<Authentication>(res.Content.ReadAsStringAsync().Result);

        _context.HttpContext.Session.SetString("token", authentication.Access_Token);

        return authentication.Access_Token;
    }
    else
    {
        throw new Exception();
    }
}

Срок действия этого токена истекает через 60 минут, поэтому я должен позаботиться об этом, и я использую этот токен только для доступа одна конкретная c конечная точка, я не использую это для аутентификации или авторизации. Какие изменения я могу сделать, чтобы сохранить их в cook ie или, возможно, в localalstorage?

1 Ответ

1 голос
/ 27 марта 2020

Какие изменения я могу сделать, чтобы я мог сохранить их в cook ie или, может быть, в localalstorage?

Как мы обсуждали в комментариях, чтобы сохранить полученный токен в cook ie, вы можете использовать следующий фрагмент кода:

HttpContext.Response.Cookies.Append("token", authentication.Access_Token, 
    new Microsoft.AspNetCore.Http.CookieOptions { Expires = DateTime.Now.AddMinutes(expires_in) });

Затем вы можете проверить, приобрел ли клиент токен и не истек ли этот существующий токен в вашем коде logi c, как показано ниже.

var token = "";

if (HttpContext.Request.Cookies.TryGetValue("token",out token) && tokenExpired == false)
{
    return token;
}
return token;
//...
//code logic here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...