나는 android mobile에서 오는 데이터를 소비하는 웹 API를 가지고 있습니다. 이 웹 API는 웹 API 요청과 함께 양식 데이터와 함께 여러 부분 파일을 사용합니다. 나는 아카이브에 this 기사를 따라 갔다.웹 API 2 용 사용자 정의 비동기 작업 필터
[CustAuthAsync]
public async Task<HttpResponseMessage> SaveEHSInspectionData()
{
try
{
string root = HttpContext.Current.Server.MapPath("~/App_Data");
MultipartFormDataStreamProvider provider = new MultipartFormDataStreamProvider(root);
//do stuff
var res = await Request.Content.ReadAsMultipartAsync(provider);
// DO SOME STUFF
}
catch (Exception exp)
{
}
return Request.CreateResponse(HttpStatusCode.OK, result);
}
이 웹 API에 대한 사용자 지정 액세스 유효성 검사를 수행하려고 했으므로 요청을 확인하는 필터가 구현되었습니다. 유효성 검사를 통과하면 수 있습니다 :
나는
public class CustAuthAsyncAttribute : ActionFilterAttribute
{
public override async Task OnActionExecutingAsync(HttpActionContext actionContext, CancellationToken cancellationToken)
{
InternalOnExecutingAsync(actionContext);
}
}
이하이
protected void InternalOnExecutingAsync(HttpActionContext actionContext)
{
var authValue = actionContext.Request.Headers;
if (authValue.Contains("CustomAccessToken"))
{
string token = authValue.GetValues("CustomAccessToken").First();
var result = // doing some decription
if (result != null)
{
bool validationResult = // validation with database
if (!validationResult)
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = "Invalid token" };
}
}
else
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = "Invalid token" };
}
}
else
{
actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized)
{ ReasonPhrase = "Unauthorized Request" };
}
이러한 구현과 같은 내부 방법은 API 클라이언트 도구 (우체부 예)에서 잘 작동하는 등의 필터가 있습니다 메소드에 요청하십시오.
이
무단 액세스로 응답 메시지를 말하고, 모바일 앱에서 작동하지 않습니다. 사용자 지정 액세스 유효성 검사가 통과되는 경우에도 메서드에 요청을 허용하지 않습니다.참고 :이 방법은 필터를 사용하지 않고 모바일에서 나를 이것은 또한 모바일 앱에서 작동 얻을
도움말을 잘 노력하고 있습니다.
미리 감사드립니다.