C# 授权属性逻辑



我正在尝试在我的WebApi控制器中实现Authorize属性。我已经找到了有关如何实现Authorize的资源,甚至我需要在实现授权时设置线程和 HttpContext 主体。但是我找不到如何/在哪里编写授权逻辑的示例。

public class MyController : ApiController
{
    [Route("")]
    [Authorize]
    public async Task<IHttpActionResult> Get() {}
}
public class MyAuthorizationProvider
{
    public void AuthorizeIGuess()
    {
        string authHeader = HttpContext.Request.Headers.GetValues("Authorization").FirstOrDefault();
        // do stuff with auth header
        // create principal
        HttpContext.Current.User = ...;
        Thread.CurrentPrincipal = ...;
    }
}

如何设置MyAuthorizationProvider以便将其用于Authorize,这是我设置身份验证上下文的方式吗?

你需要继承像这样的AuthorizeAttribute

public class MyAuthorizationProvider : AuthorizeAttribute  
{
  //Write your validation logic here. 
}

并使用此覆盖授权属性,例如

    public class MyController : ApiController
  {
    [Route("")]
    [MyAuthorizationProvider]
    public async Task<IHttpActionResult> Get() {}
  }

当你继承AuthorizeAttribute时,它将为您提供一些覆盖方法,以更好的方式实现您的逻辑,也使用它。有关更多详细信息,请查看此答案。

最新更新