【问题标题】:Authorize Attribute redefinition does not work授权属性重新定义不起作用
【发布时间】:2016-10-04 14:06:29
【问题描述】:

一段时间以来,我对 Authorization 进行了一些干预,发现一些页面可以帮助我覆盖默认方法。但是,似乎我无法使该属性起作用。我使用 Visual Studio 2013 调试我的项目,但它仍然没有在重新定义 Authorize 方法的断点处停止。如果 Web 服务在将 [Authorize] 放置在类或什至单个方法之后工作,这将不是问题。我已经尝试了所有这些,但似乎它返回的所有内容都是 401 Unauthorized。它甚至也没有进入所需的 Web 服务。以下是一些示例来解释我的问题:

[Authorize]
[RoutePrefix("api/MyWS")]
public class MyWSController : ApiController
{
    private Test_UnitOfWork unitOfWork = new Test_UnitOfWork();

    [Route("Get"), HttpGet]
    public IEnumerable<MyWS> Get()
    {
        return unitOfWork.MyWSRepository.Get().OrderBy(s => s.Name);
    }

重新定义 OnAuthorization 方法

public class TokenValidationAttribute : System.Web.Http.AuthorizeAttribute
{
    public override void OnAuthorization(HttpActionContext actionContext)
    { ...

控制器调用网络服务

MyWSlist = client.GetSync<IList<MyWS>>("MyWS");

我想知道我在这里做错了什么,因为每当我尝试调试我的项目时,我似乎根本无法输入重写的代码,它只会返回未经授权的错误。我也尝试过重写其他方法,但没有骰子。 问候

【问题讨论】:

标签: c# api asp.net-web-api authorization


【解决方案1】:

我使用 Visual Studio 2013 调试我的项目,但它仍然没有 在重新定义 Authorize 方法的断点处停止。

在覆盖 AuthorizeAttribute 之后,您希望将其应用于控制器或操作除非您配置为全局过滤器

[TokenValidation]
public class MyWSController : ApiController
{
  ...
}

或者,我是否在您的问题中遗漏了什么?

【讨论】:

  • 你说得对,我现在感觉自己像个大白痴。感谢您清除我的想法。
猜你喜欢
  • 2016-05-14
  • 2014-06-13
  • 2014-10-27
  • 1970-01-01
  • 2014-10-28
  • 1970-01-01
  • 2021-04-24
相关资源
最近更新 更多