1

我研究了 mvc3,并在 asp.net 网站上阅读了很多文章或观看视频。在我对 mvc3 有所了解之后,我对授权属性有疑问,以验证用户是否登录。当我创建一个页面来验证用户时的默认代码是这样的:

[HttpPost]
    public ActionResult LogOn(LogOnModel 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");
                }
            }
            else
            {
                ModelState.AddModelError("", "The user name or password provided is incorrect.");
            }
        }

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

如果我不想使用 Membership 和 FormsAuthentication(不要说 Windows 身份验证)来授权用户。那么有什么方法可以创建一些东西来验证用户身份,当我使用Authorize 属性时,它会像我使用Membership 和 FormsAuthentication时一样工作。我不知道使用什么 Authorize 属性来验证用户是否登录,因此我可以自己创建会话或 cookie 来验证用户。如果我的问题不清楚,请告诉我!谢谢阅读!

4

1 回答 1

3

您可以做的是滚动您自己的授权属性,如下所示:

public class AuthorizeAttribute : System.Web.Mvc.AuthorizeAttribute
{

    protected override bool AuthorizeCore(System.Web.HttpContextBase httpContext)
    {
        //Put your authorisation check here
    }

    protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
    {
        //put your redirect to login controller here
    }
}
于 2013-05-21T09:17:16.707 回答