Я создал собственный класс авторизации для проверки токена пользователя.Это web api 2.
Проблема в том, что пользовательская авторизация проверяет токен, но после этого не выполняет метод в контроллере.Он должен выполнить пользовательский метод в контроллере после проверки токена.Я отладил код и вижу, что токен авторизации проверен правильно, но не выполняется метод, а просто возвращается 200.
Кто-нибудь может помочь?(Я новичок в этом)
код класса пользовательской авторизации:
public class CustomAuthorize : System.Web.Http.AuthorizeAttribute
{
public override void OnAuthorization(System.Web.Http.Controllers.HttpActionContext actionContext)
{
base.OnAuthorization(actionContext);
if (actionContext.Request.Headers.Authorization.Parameter != null)
{
string authenticationToken = Convert.ToString(actionContext.Request.Headers.Authorization.Parameter);
PartnerUserProfile user = new PartnerUserProfile();
user = user.validate_token(authenticationToken);
if (user.recordref > 0) //above user has some content and matches the token from validate_token method. it wil be blank if not
{
return;
}
else
{
HttpContext.Current.Response.AddHeader("Bearer", authenticationToken);
HttpContext.Current.Response.AddHeader("AuthenticationStatus", "NotAuthorized");
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
return;
}
}
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.ExpectationFailed);
actionContext.Response.ReasonPhrase = "Please provide valid inputs";
return;
}
}
и мой контроллер ниже этого уровня никогда не будет выполнен.
[HttpPost]
[CustomAuthorize]
public IHttpActionResult user(PartnerUserProfile user) //setUser
{
ReturnData rd = user.setPartnerUserProfile();
if (rd.status == 0)
{
return BadRequest("Invalid");
}
return Ok(rd);
}