2

私は User モデルを持っています:

[Required]
public string Password { get; set; }

[Required]
public string UserName { get; set; }

私はMyMembershipProvider : MembershipProvider含むを持っています:

public override bool ValidateUser(string username, string password)
{
   if (username == ConfigurationManager.AppSettings["DefaultUsername"] && password == ConfigurationManager.AppSettings["DefaultUserPassword"])
   {
       return true;
   }
   else
   {
       return false;
   }
}

私のログオン アクションは次のようになります。

[HttpPost]
    public ActionResult LogOn(User model, string returnUrl)
    {
        if (ModelState.IsValid)
        {
            if (Membership.ValidateUser(model.UserName, model.Password))
            {
                return RedirectToAction("Index", "Home");
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

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

問題:

[Authorize]正しいユーザー名とパスワードを指定すると、属性を含むアクションとコントローラーに移動できないようです。ブレークポイントを使用すると、インデックス ページに落ちreturn RedirectToAction("Index", "Home");ますが、アクセスは拒否されます。

私がひどく間違っているところを誰かが見ることができますか?

4

1 に答える 1

4

次のアクションでユーザーが認証されたことを認識するように、認証Cookieを設定する必要があります。

....
if (Membership.ValidateUser(model.UserName, model.Password))
{
    FormsAuthentication.SetAuthCookie(model.UserName, true);
    return RedirectToAction("Index", "Home");
}
....
于 2012-10-04T14:47:53.237 に答える