Как проверить и проверить заголовок токена? - PullRequest
0 голосов
/ 26 февраля 2020

Я пытаюсь использовать токен в своей функции поиска. Когда я использую токен для поиска, он будет проверять только заголовок токена, чтобы определить, должен ли запрос go проходить через все. Если неправильно, отмените запрос и вернитесь назад.

Запрос JSON

{ 
"header": { 
"Token": "558fedce-a84e-4a9a-8698-5cd27d5af3ed"
},
"body": { 
"WarehouseCode": "W001", 
"CompanyCode": "C001"
}
}

Index.cs html

<div class="row">
    <div class="col-md-4">
        @using (Html.BeginForm("Index", "Home", FormMethod.Post))
        {
        @Html.TextArea("track") <input type="submit" value="Track"/>
        }
    </div>
</div>

Model.cs

   public class GetInvBalReq
    {
        public class GetData
        {
            public Header header { get; set; }
            public Body body { get; set; }
        }

        public class Header
        {
            public string Token { get; set; }
        }

        public class Body
        {
            public string WarehouseCode { get; set; }
            public string CompanyCode { get; set; }
        }
    }

HomeController.cs

Это контроллер для функции поиска

   [System.Web.Mvc.HttpPost]
        public ActionResult Index(string track)
        {

            UploadToBCSSoftSCM b = new UploadToBCSSoftSCM();
                string response = b.GetInvBal(track);
                var data = JsonConvert.DeserializeObject<Rootobject>(response);

            return View(data);
        }

1 Ответ

0 голосов
/ 26 февраля 2020
public class TokenAuthorize: ActionFilterAttribute
{
    public override void OnActionExecuting(HttpActionContext actionContext)
    {
        //gettting token from headers
        IEnumerable<string> values;
        if (!actionContext.Request.Headers.TryGetValues("Token", out values) || values.Count() > 1)
        {
         //if no token header found in rquest
        actionContext.Response = new HttpResponseMessage(HttpStatusCode.Unauthorized);
        }
        else
        {
        //here is logic to validate your token
        //if token is not proper than you can set response as unauthorized as above
        }
    }
}

И затем добавьте атрибут в вышеупомянутый метод как:

[TokenAuthorize]
    public ActionResult Index(string track)
    {

        UploadToBCSSoftSCM b = new UploadToBCSSoftSCM();
            string response = b.GetInvBal(track);
            var data = JsonConvert.DeserializeObject<Rootobject>(response);

        return View(data);
    }
...