gpt4 book ai didi

asp.net-mvc-4 - MVC 4 覆盖 AuthorizeAttribute 不起作用

转载 作者:行者123 更新时间:2023-12-03 02:44:33 26 4
gpt4 key购买 nike

我创建了一个基本的 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:[此处的端口号]/Home/ContactUs时,它不会命中覆盖类 AuthAttribute。

代码有问题吗?

最佳答案

您的评论表明您正在努力实现 this post 中的目标,但您根本不是从该帖子中复制代码,而是从之前的 SO 帖子中复制代码:Using custom authorization in MVC 4那指的是Web API。在阅读该文章时,您会发现差异在于您使用的 AuthorizeAttribute。您正在使用 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;
}
}
}

关于asp.net-mvc-4 - MVC 4 覆盖 AuthorizeAttribute 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15193251/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com