gpt4 book ai didi

asp.net-mvc - OnAuthorization 未被调用

转载 作者:行者123 更新时间:2023-12-03 09:21:10 25 4
gpt4 key购买 nike

我使用具有自定义授权的 WebApi 服务。这是 AuthorizationAttribute:(为了尽可能简单,我删除了所有逻辑并仅尝试发送 401):

public class Auth : AuthorizeAttribute
{
private readonly List<Permissions> _requiredPermissions;

public Auth(params Permissions[] permissions)
{
_requiredPermissions = permissions.ToList();
}

public override void OnAuthorization(AuthorizationContext filterContext)
{
base.HandleUnauthorizedRequest(filterContext);
}
}

在我的 Controller 操作中,我通过以下方式调用身份验证:

public class CustomerController : ApiController
{
[Auth(Permissions.CanLogin, Permissions.IsAdmin)]
public HttpResponseMessage Get(Guid id)
{
// Do something
}
}

(Permissions 只是一个简单的枚举。)

我可以看到 Auth() 的构造函数在程序启动时被调用。但“OnAuthorization()”方法永远不会被调用。

我错过了什么?

最佳答案

问题是我实现的授权来自MVC。但是对于Web api,则需要再次授权,看起来几乎相同,但略有不同。

首先,我必须删除自定义授权类中对 MVC 的引用并使用 web.http 代替:

所以。我必须删除这个:

using System.Web.Mvc

并添加以下内容:

using System.Web.Http;

那么 OnAuthorization-Method 需要另一个参数。所以我必须改变这一点:

public override void OnAuthorization(AuthorizationContext filterContext)

对此:

public override void OnAuthorization(HttpActionContext filterContext)

(HttpActionContext 位于 System.Web.Http.Controllers - 命名空间内)

在我使用启用了 Web Api 选项的“ASP.NET MVC 4 Web 应用程序”内的 nuget-console 安装最新版本的 WebApi 后,授权似乎停止工作。

关于asp.net-mvc - OnAuthorization 未被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30484927/

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