0

私はこの小さな MVC プロジェクトに取り組んでおり、かなりうまく形になっています。ちょうど今、Internet Explorer でテストしようと思ったのですが、原因/解決策をどこで探すべきか本当にわからない奇妙な動作を示しています。

ここにライブがあります:www.begijnhof.net/CodeBox

FireFox、WP7 フォンの IE、iPhone または Chrome の safari で登録/ログインすると、ホームページに移動し、ページの左上に追加のボタンが表示されます。

IEでは、適切な資格情報を提供する(user/user1*)と、エラーが表示されず、間違った資格情報を提供したときに認証されるため、認証されると思います。ただし、ボタンなどは表示されません。

もう少しテストした後、すべてのCookieなどを削除しても、明日か、すぐに再び機能しなくなります。

誰かがこれについて正しい方向に私を向けることができますか? ありがとう..

わかりました、申し訳ありません: 2 つ目の問題、間違ったコードについて考えていました。したがって、ログインプロセスは次のとおりです。

[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 であり、それがいくつかの問題を引き起こしています。

4

1 に答える 1

0

問題はこれだと思います:

if (members.ValidateUser(model.Username, model.Password)) 
{ 
    FormsAuthentication.SetAuthCookie(model.Username, false);
    return RedirectToAction("List", "Snippet"); 
}

の2番目のパラメータFormsAuthentication.SetAuthCookieをfalseに設定すると、Cookieはブラウザセッション間で保持されません。つまり、ブラウザを閉じると、Cookieが削除されます。代わりにtrueに設定してみてください。

if (members.ValidateUser(model.Username, model.Password)) 
{ 
    FormsAuthentication.SetAuthCookie(model.Username, true);
    return RedirectToAction("List", "Snippet"); 
}
于 2012-08-08T11:33:31.517 に答える