登录成功时,我尝试将身份验证 key 存储到我的 cookie 中:
HttpContext.Response.Cookies.Append("Bearer", accessToken, cookieMonsterOptions);
所以在 Controller 类中这是有效的。我可以轻松创建和读取我的 cookie。
但现在我想检查一下,如果存在,则读取 _Layout.cshtml
中 cookie 的值,并显示登录用户的名称 - 或登录链接。
但是我如何在部分_Layout.cshtml
中读取我的cookie?
string value = HttpContext.Request.Cookies.Get("Bearer");
不起作用。它尝试将 System.Web
添加到我的使用中,或者说 HttpContext 是静态的并且需要引用来访问 Request
。
有什么建议或想法吗?
最佳答案
在 ASP.NET Core 中,不再有静态 HttpContext 的概念。新的 Microsoft Web 框架中的依赖注入(inject)规则。关于 View ,有 @inject
指令用于访问已注册的服务,例如 IHttpContextAccessor
服务 ( https://docs.asp.net/en/latest/mvc/views/dependency-injection.html )。
使用 IHttpContextAccessor
您可以获取 HttpContext
和 cookie 信息,如本例所示。
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
@{
foreach (var cookie in HttpContextAccessor.HttpContext.Request.Cookies)
{
@cookie.Key @cookie.Value
}
}
关于c# - 在 ASP.NET Core 中访问 _Layout.cshtml 中的 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38945678/