Asp.net mvc 4 MVC 4覆盖属性不工作
我创建了一个基本的MVC4项目。添加了HomeController和Home\Index.cshtml以及ContactUs.cshtml。 在Global.asax中为ContactUs添加路由 添加文件夹Auth,并在Auth文件夹中添加类Auth.cssAsp.net mvc 4 MVC 4覆盖属性不工作,asp.net-mvc-4,authorize-attribute,Asp.net Mvc 4,Authorize Attribute,我创建了一个基本的MVC4项目。添加了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 {
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;
}
}
}
在家庭控制器中
public class HomeController : Controller
{
//
// GET: /Home/
public ActionResult Index()
{
return View();
}
//
// GET: /Home/
[Auth]
public ActionResult ContactUs()
{
return View();
}
}
问题是何时运行代码并访问http://localhost:[此处的端口号]/Home/ContactUs,
它不会影响重写类AuthAttribute
代码有什么问题吗?您的评论说您正在尝试实现中的功能,但您完全不是从那篇文章中复制代码,而是从以前的SO文章中复制的:那篇文章引用了Web API。在阅读这篇文章时,你会发现不同之处在于你使用了什么属性。您使用的是
System.Web.Http
而不是System.Web.Mvc
如果您使用了您在评论中提到的代码,那么您会发现它可以工作:
using System.Web;
using System.Web.Mvc;
namespace MvcApplicationTestProject1
{
public class AuthAttribute : AuthorizeAttribute
{
protected override bool AuthorizeCore(HttpContextBase httpContext)
{
return false;
}
}
}
你想达到什么目标?这并不明显……我正在尝试将[Authorize]自定义为[Auth],并在cotrollers上使用它。这将使我能够灵活地构建自己的身份验证,而不是使用标准成员身份。这就是我试图实现的目标。唯一的区别是它是MVC4,而不是MVC3。谢谢。它现在被触发了。谢谢您的帮助。@user2130167 NP。祝你编程愉快!谢谢你,谢谢你!可笑的是,包括一个不同的名称空间使我指向了错误的mvc4覆盖,它无法“工作”,并且默默地失败。@MikeSmithDev五年后,仍然相关。如果有某种警告就好了。