作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个 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/
我是一名优秀的程序员,十分优秀!