授权属性重新定义不起作用

时间:2016-10-04 14:06:30

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

我一直在使用Authorization干预了一段时间,发现了一些帮助我覆盖默认方法的页面。但是,似乎我无法使该属性起作用。我使用Visual Studio 2013调试我的项目,但它仍然没有停止在Authorize方法被重新划分的断点处。如果在将[授权]放在类或甚至单个方法之后Web服务工作,这将不会成为问题。我已经尝试了所有它们似乎它返回的一切都是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)
    { ...

控制器调用Web服务

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

我想知道我在这里做错了什么,看到每当我尝试调试我的项目时,我似乎根本无法输入重写代码,它只返回Unauthorized错误。我也尝试重写其他方法,但没有骰子。 此致

1 个答案:

答案 0 :(得分:3)

  

我使用Visual Studio 2013调试我的项目,但它仍然没有   停止在授权方法被重新划分的断点处。

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

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

或者,我在你的问题中遗漏了什么?