用户使用以下代码成功登录后,我在cookie中存储用户的全名。
var res = await _signInManager.PasswordSignInAsync(suser.UserName, user.Password, user.Remember, false);
if (res.Succeeded)
{
Response.Cookies.Append("fullName", suser.FullName);
if (string.IsNullOrWhiteSpace(returnUrl))
return RedirectToAction("Dashboard", "User");
else
return Redirect(returnUrl);
}
我想在_Layout
页面中读取此值,以便我可以在母版页中显示全名。根据{{3}}帖子中的解决方案提及。我尝试在_Layout
页面中关注sysntax。
@inject Microsoft.AspNetCore.Http.IHttpContextAccessor HttpContextAccessor
@{
ViewBag.FullName = HttpContextAccessor.HttpContext.Request.Cookies["fullName"];
}
但我在ViewBag.FullName
没有任何价值。我在这里做错了吗?如何在Views中读取cookie中的存储值?
答案 0 :(得分:0)
我做了一些测试,以获得与你相同的结果。
我看到它的方式,你将一个新的cookie值附加到Response.Cookie并尝试在Request.Cookies中访问它,因此,添加的值(“fullname”)将仅在下一个中可用请求(重定向后)。如果您尝试在以设置cookie的相同请求呈现的视图中访问它,则cookie值将为null。
我使用“return View()”和“return RedirectToAction”进行测试,只有第二个工作。
我在你的代码中看到你正在进行重定向,我建议调试它,看看代码是否正在输入该行代码,如果是,请转到你正在重定向的那个动作,并调试看看Request.Cookies是否正常。
问候。