【发布时间】:2018-05-28 15:00:39
【问题描述】:
我正在尝试在我的用户登录时设置一个 cookie。该 cookie 在 Safari 上有效,但在 Chrome 上它没有显示在 Storage / Cookies 部分。
我做错了什么?
在 AccountController 我有以下内容:
public async Task<ActionResult> Login(LoginViewModel model, string ReturnUrl)
{
if (!ModelState.IsValid)
{
return View(model);
}
var result = await SignInManager.PasswordSignInAsync(model.Username, model.Password, model.RememberMe, shouldLockout: true);
switch (result)
{
case SignInStatus.Success:
{
//create a cookie
HttpCookie myCookie = new HttpCookie("site");
//Add key-values in the cookie
myCookie.Values.Add("test", "test value");
myCookie.Domain = "local";
myCookie.Path = "/";
myCookie.Expires = DateTime.Now.AddYears(1);
Response.AppendCookie(myCookie);
return RedirectToLocal(ReturnUrl);
}
case SignInStatus.LockedOut:
return View("Lockout");
case SignInStatus.Failure:
default:
ModelState.AddModelError("", "The user name or password provided is incorrect.");
return View(model);
}
}
更新 - 如果我删除域,则 cookie 开始在 Chrome 中工作(但无法共享)
【问题讨论】:
-
"local" 似乎不是一个有效的域。您是要在本地共享 cookie,还是在“实时”站点上共享 cookie?如果您尝试跨子域共享它,则需要类似“.yourdomain.tld”之类的内容 - 带有前导句点。
-
试图在我的开发机器上本地共享它 - 一个域是 xyz.local,另一个是 abc.local
-
顺便说一句@TiesonT。 , 不需要提前期
-
@RobbieMills 很有趣。 MDN 同意你的观点。似乎我总是需要领先时期才能在我们的网站上工作。我想,每天都能学到新东西。
标签: asp.net-mvc