C# C授权属性逻辑
我正在尝试在WebApi控制器中实现Authorize属性。我已经找到了关于如何实现授权的参考资料,甚至在实现授权时我需要设置线程和HttpContext主体。但我找不到如何/在何处编写授权逻辑的示例C# C授权属性逻辑,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我正在尝试在WebApi控制器中实现Authorize属性。我已经找到了关于如何实现授权的参考资料,甚至在实现授权时我需要设置线程和HttpContext主体。但我找不到如何/在何处编写授权逻辑的示例 public class MyController : ApiController { [Route("")] [Authorize] public async Task<IHttpActionResult> Get() {} } public class My
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以便用于授权,这就是我设置身份验证上下文的方式吗?您需要继承AuthorizationAttribute,如
并使用此覆盖授权属性,如
public class MyController : ApiController
{
[Route("")]
[MyAuthorizationProvider]
public async Task<IHttpActionResult> Get() {}
}
当您继承AuthorizeAttribute时,它将为您提供一些重写方法,以更好地实现您的逻辑,也可以使用它。有关更多详细信息。在使用简单[Authorize]的示例中,这些只是抽象示例吗?是否可以重复使用[Authorize]属性,或者是否始终扩展/重命名该属性?
public class MyController : ApiController
{
[Route("")]
[MyAuthorizationProvider]
public async Task<IHttpActionResult> Get() {}
}