2

我正在尝试编写一个登录方法,该方法对用户进行身份验证和授权进入我使用 ASP.NET MVC 4 开发的网站。问题是,尽管我在验证登录方法中的用户并重定向到 ViewProfile 操作后调用了 FormsAuthentication.SetAuthCookie 方法, 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 回答