基本的なMVC4プロジェクトを作成しました。HomeControllerとHome\Index.cshtmlおよびContactUs.cshtmlを追加しました。ContactUsのGlobal.asaxにルートを追加します。
Folder 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:[ここのポート番号] / Home / ContactUsにアクセスすると、オーバーライドクラスAuthAttributeにヒットしないことです。
コードに何か問題がありますか?