5

私は新しい ID 管理を使い始めており、単純なニーズがあります。ユーザーが間違った名前でログインすると、パスワード エラーが報告されます。dbcontext メソッドを使用してユーザー名が存在するかどうかも確認するように、これを変更するにはどうすればよいですか?

    public ActionResult Login(LoginViewModel model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            // Validate the password
            IdentityResult result = IdentityManager.Authentication.CheckPasswordAndSignIn(AuthenticationManager, model.UserName, model.Password, model.RememberMe);
            if (result.Success)
            {
                return Redirect("~/home");
            }
            else
            {
                AddErrors(result);
            }
        }

        // If we got this far, something failed, redisplay form
        return View(model);
    }
4

3 に答える 3

8

これは悪い考えです

ユーザー名を検証し、ユーザー名が存在しないことを報告する場合、潜在的なハッカーが Web サイト経由で登録されているユーザー名を簡単に特定できるようになります。

ユーザーに返される実際のエラー メッセージは (ASPNET.Identity v1) です。

Invalid username or password

それ以外の場合は、詳細に説明されているように、次の方法で、指定されたユーザー名を持つユーザーの存在を確認できます。

var user = await UserManager.FindByNameAsync(username);
于 2014-02-26T01:00:10.610 に答える
0

この投稿は「ユーザー名が存在する場合、MVC5 ASP.NET ID ログイン アクション チェックを作成するにはどうすればよいですか?」の複製だと思います。

これを解決する1つの方法は、データベースを調べて、ユーザーが存在するかどうかを確認することです-->のようなもの if(myUserRepository.GetUserByUserName(model.UserName) != null) *User exists*

同じことを行う UserManager.FindByName(model.UserName) メソッドも必要です。

しかし、もっと重要なことは、本当にこれをやりたいのか? ユーザー名が間違っていることを示すエラー メッセージを表示すると、ハッカーに有効なユーザー名を見つける機会が与えられます。その後、サイト上のすべてのユーザー名を試すスクリプトを実行し、有効なユーザー名のリストを取得できます。

于 2013-11-25T08:49:39.673 に答える