gpt4 book ai didi

.net - 如何在cookie中存储token?

转载 作者:行者123 更新时间:2023-12-05 05:04:58 26 4
gpt4 key购买 nike

我有一个 API 可以返回一个 token ,使用该 token 我可以向 API 发出更多请求,现在我将 token 存储在 session 中,但是我认为使用 session 会破坏使用 token 的全部目的,所以我想知道如何将 token 存储在 cookie 中?下面是我获取 token 并将其写入 session 的代码:-

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();
}
}

此 token 将在 60 分钟后过期,因此我也必须注意这一点,并且我仅将此 token 用于访问一个特定端点,不将其用于身份验证或授权。我要进行哪些更改才能将其存储在 cookie 或本地存储中?

最佳答案

What changes do I make so I can store it in cookie or maybe in localstorage?

正如我们在评论中讨论的那样,要将获取的 token 存储在 cookie 中,您可以使用以下代码片段:

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

然后您可以在您的代码逻辑中检查客户端是否已获取 token 以及该现有 token 是否已过期,如下所示。

var token = "";

if (HttpContext.Request.Cookies.TryGetValue("token",out token) && tokenExpired == false)
{
return token;
}
return token;
//...
//code logic here

关于.net - 如何在cookie中存储token?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60817847/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com