我正在研究这个小小的MVC项目,该项目正在形成。刚才我想我会在Internet Explorer中测试它,它显示了一些奇怪的行为,我真的不知道在哪里寻找原因/解决方案。
它就在这里:www.begijnhof.net/CodeBox
在FireFox,我的WP7手机上的IE浏览器,iphone或Chrome上的Safari,你注册/登录,它会带你到主页,然后在页面的左上方显示额外的按钮。
在IE中,当您提供正确的凭据(user/user1*)
时,我认为它会进行身份验证,因为它不会显示任何错误,并且当您提供错误的凭据时也是如此。但它没有显示按钮等。
经过测试后,它会更有效,我会删除所有的cookies等,但明天左右它将很快再次无法使用。
有人能指出我在这个方向上正确的方向吗?感谢..
好的,抱歉: 我在考虑第二个问题,错误的代码!所以登录过程如下:
[HttpPost]
public ActionResult LogIn(LogOnViewModel model)
{
if (ModelState.IsValid)
{
if (members.ValidateUser(model.Username, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Username, false);
return RedirectToAction("List", "Snippet");
}
//Check to see what's wrong
if (userRepo.IsUserLockedOut(model.Username))
ModelState.AddModelError("", "Authentication failed!");
if (userRepo.Users.FirstOrDefault(u => u.Username == model.Username) == null)
ModelState.AddModelError("", "User does not exists!");
if (!userRepo.IsUserLockedOut(model.Username) && userRepo.Users.FirstOrDefault(u => u.Username == model.Username) != null)
ModelState.AddModelError("", "The password is not correct!");
return View(model);
}
return View(model);
}
编辑:我想我找到了导致它的原因,但没有解决方案。
它所拥有的域名有隐藏,因此URL始终是/ CodeBox,这会导致一些问题。
答案 0 :(得分:0)
我认为问题是:
if (members.ValidateUser(model.Username, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Username, false);
return RedirectToAction("List", "Snippet");
}
将FormsAuthentication.SetAuthCookie
的第二个参数设置为false表示cookie不会在浏览器会话中保留。这意味着如果您关闭浏览器,cookie将被删除。请尝试将其设置为true:
if (members.ValidateUser(model.Username, model.Password))
{
FormsAuthentication.SetAuthCookie(model.Username, true);
return RedirectToAction("List", "Snippet");
}