Internet Explorer未对用户进行身份验证

时间:2012-08-07 15:09:34

标签: asp.net-mvc-3 internet-explorer

我正在研究这个小小的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,这会导致一些问题。

1 个答案:

答案 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"); 
}