从asp.net core 1.0.1中的cookie读取值

时间:2016-10-16 12:12:51

标签: asp.net-mvc cookies asp.net-core asp.net-core-mvc

用户使用以下代码成功登录后,我在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中的存储值?

1 个答案:

答案 0 :(得分:0)

我做了一些测试,以获得与你相同的结果。

我看到它的方式,你将一个新的cookie值附加到Response.Cookie并尝试在Request.Cookies中访问它,因此,添加的值(“fullname”)将仅在下一个中可用请求(重定向后)。如果您尝试在以设置cookie的相同请求呈现的视图中访问它,则cookie值将为null。

我使用“return View()”和“return RedirectToAction”进行测试,只有第二个工作。

我在你的代码中看到你正在进行重定向,我建议调试它,看看代码是否正在输入该行代码,如果是,请转到你正在重定向的那个动作,并调试看看Request.Cookies是否正常。

问候。