要解决ASP Web API中自定义身份验证时始终收到401未经授权的响应的问题,您可以按照以下步骤操作:
确保您已正确配置身份验证和授权。
创建自定义身份验证过滤器。
System.Web.Http.AuthorizeAttribute
。OnAuthorization
方法,在该方法中执行您的自定义身份验证逻辑。HttpContext.Current.Response
对象发送401未经授权的响应。public class CustomAuthorizationAttribute : System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
// 执行自定义身份验证逻辑
if (!IsAuthorized(actionContext))
{
// 发送401未经授权的响应
HandleUnauthorizedRequest(actionContext);
}
}
private bool IsAuthorized(System.Web.Http.Controllers.HttpActionContext actionContext)
{
// 在这里执行您的自定义身份验证逻辑
// 返回true表示身份验证通过,返回false表示身份验证失败
}
}
在需要身份验证的控制器或操作方法上应用自定义身份验证过滤器。
[CustomAuthorization]
特性将自定义身份验证过滤器应用于整个控制器或特定的操作方法。[CustomAuthorization]
public class MyController : ApiController
{
// ...
}
或者
public class MyController : ApiController
{
[CustomAuthorization]
public IHttpActionResult MyAction()
{
// ...
}
}
确保您的客户端发送正确的身份验证凭据。
使用这些步骤,您应该能够解决ASP Web API自定义身份验证时始终收到401未经授权的响应的问题。请根据您的具体需求和身份验证逻辑进行调整。