2

ASP.NET MVC 4 で開発された Web サイトにユーザーを認証および承認する Login メソッドを記述しようとしています。問題は、Login メソッド内でユーザーを検証した後に FormsAuthentication.SetAuthCookie メソッドを呼び出し、ViewProfile アクションにリダイレクトすることです。 、 User.Identity.IsAuthenticated は、カスタム Authorize 属性オブジェクトでまだ false を返します。

私は以下のコードを与えました:

[HttpPost]
[AllowAnonymous]
public ActionResult Login(LoginModel model)
{
    if (Membership.ValidateUser(model.Username, model.Password))
    {
        FormsAuthentication.SetAuthCookie(model.Username, model.RememberMe);
        return this.RedirectToAction("ViewProfile");
    }
    ModelState.AddModelError("", "The user name or password provided is incorrect.");
    return View(model);
}

[MyAuthorize(Roles = "Super Role, Seeker")]
public ActionResult ViewProfile()
{
    if (ModelState.IsValid)
    {
    ...
    }
}

そして、ここに MyAuthorizeAttribute クラスのコードがあります

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public class MyAuthorizeAttribute : AuthorizeAttribute
{
    protected override bool AuthorizeCore(HttpContextBase httpContext)
    {
        if (httpContext == null)
            throw new ArgumentNullException("httpContext");

        var user = httpContext.User;
        if (!user.Identity.IsAuthenticated)
            return false;

        ...
    }
}

私は何が欠けていますか?

4

1 に答える 1

4

FormsAuthentication を使用して同様の状況に直面する可能性がある場合は、web.config ファイルの下に次の構成が存在することを確認してください。

<authentication mode="Forms"></authentication>

今、すべてが正常に動作します

于 2013-08-26T18:00:51.657 に答える