パスワードが有効かどうかを確認するには? ASP.NET MVCメンバーシップ

私はデフォルトのasp.net MVC 4のメンバーシップシステムを使用しています。ユーザーはASP.NET Web APIを介してプレーンテキストでユーザー名とパスワードを送信します。

So I have his plain password, How to compare it with stored hashed password?

関数に文字列を取り、ハッシュ化された文字列と比較しますか?

3
nl ru de
直接の回答はyesです。[ Membership.ValidateUser ] msdn.microsoft.com/en-us/library/…
追加された 著者 Mark Jones,
直接の回答はyesです。[ Membership.ValidateUser ] msdn.microsoft.com/en-us/library/…
追加された 著者 Mark Jones,

2 答え

You have to make sure that your web.config is properly setup to use membership. http://msdn.microsoft.com/en-us/library/6e9y4s5t%28v=vs.100%29.aspx

Also, I make sure to create a MachineKey in your web.config as well. http://msdn.microsoft.com/en-us/library/ff649308.aspx

コントローラに入れるコードは、次のようになります。

[HttpPost]
public ActionResult Login(AuthenticationModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.Username, model.Password)) {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
             && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
    }
}

あなたのモデルは次のようなものです:

    public class AuthenticationModel
    {
        [Required]
        [Display(Name = "Username")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Display(Name = "Remember Me?")]
        public bool RememberMe { get; set; }
    }
6
追加された

You have to make sure that your web.config is properly setup to use membership. http://msdn.microsoft.com/en-us/library/6e9y4s5t%28v=vs.100%29.aspx

Also, I make sure to create a MachineKey in your web.config as well. http://msdn.microsoft.com/en-us/library/ff649308.aspx

コントローラに入れるコードは、次のようになります。

[HttpPost]
public ActionResult Login(AuthenticationModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        if (Membership.ValidateUser(model.Username, model.Password)) {
            FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

            if (Url.IsLocalUrl(returnUrl) && returnUrl.Length > 1 && returnUrl.StartsWith("/")
             && !returnUrl.StartsWith("//") && !returnUrl.StartsWith("/\\"))
            {
                return Redirect(returnUrl);
            }
            else
            {
                return RedirectToAction("Index", "Home");
            }
        }
    }
}

あなたのモデルは次のようなものです:

    public class AuthenticationModel
    {
        [Required]
        [Display(Name = "Username")]
        public string UserName { get; set; }

        [Required]
        [DataType(DataType.Password)]
        [Display(Name = "Password")]
        public string Password { get; set; }

        [Display(Name = "Remember Me?")]
        public bool RememberMe { get; set; }
    }
6
追加された