【发布时间】:2013-03-04 01:41:12
【问题描述】:
我创建了一个基本的 MVC 4 项目。添加了 HomeController 和 Home\Index.cshtml 和 ContactUs.cshtml。 在 Global.asax 中为 ContactUs 添加路由。
添加一个文件夹 Auth 并在 Auth 文件夹中添加一个类 Auth.css。
using System;
using System.Web;
using System.Web.Http;
using System.Net.Http;
namespace MvcApplicationTestProject1
{
public class AuthAttribute : AuthorizeAttribute
{
//public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
//{
// HandleUnauthorizedRequest(actionContext);
//}
protected override void HandleUnauthorizedRequest(System.Web.Http.Controllers.HttpActionContext actionContext)
{
var response = actionContext.Request.CreateResponse(System.Net.HttpStatusCode.Redirect);
response.Headers.Add("Location", "http://www.google.com");
actionContext.Response = response;
}
//MVC 4 Web.Http.AuthorizeAttribute has IsAuthorized function but not AuthorizeCore
protected override bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
return false;
}
}
}
在 HomeController 中
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
//
// GET: /Home/
[Auth]
public ActionResult ContactUs()
{
return View();
}
}
问题是当运行代码并访问 http://localhost:[port number here]/Home/ContactUs, 它没有命中覆盖类 AuthAttribute。
代码有问题吗?
【问题讨论】:
-
你想达到什么目的?它不明显......
-
我正在尝试将 [Authorize] 自定义为 [Auth] 并在 cotrollers 上使用它。这将为我构建自己的身份验证提供灵活性,而不是使用标准成员资格。
-
这是我试图实现的。唯一的区别是它是 MVC 4 而不是 MVC3。 weblogs.asp.net/jgalloway/archive/2012/05/04/…
标签: asp.net-mvc-4 authorize-attribute