﻿
{"id":8465,"date":"2018-07-08T16:08:55","date_gmt":"2018-07-08T16:08:55","guid":{"rendered":"http:\/\/www.gencayyildiz.com\/blog\/?p=8465"},"modified":"2018-07-08T16:08:55","modified_gmt":"2018-07-08T16:08:55","slug":"ajax-ile-token-authentication-uygulanan-web-api-tetikleme","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/ajax-ile-token-authentication-uygulanan-web-api-tetikleme\/","title":{"rendered":"Ajax \u0130le Token Authentication Uygulanan Web API Tetikleme"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p>Merhaba,<\/p>\n<p>Bir \u00f6nceki <a href=\"http:\/\/www.gencayyildiz.com\/blog\/ajax-ile-web-api-tetikleme\/\" rel=\"noopener\" target=\"_blank\">Ajax \u0130le Web API Tetikleme<\/a> ba\u015fl\u0131kl\u0131 yaz\u0131mda Ajax ile web apilere nas\u0131l ba\u011flant\u0131 kuruldu\u011funu ve nas\u0131l tetiklendi\u011fini de\u011ferlendirmi\u015ftik. Bu i\u00e7eri\u011fimizde ise Token Authentication uygulanan web apilere tekrar Ajax ile nas\u0131l ba\u011flan\u0131laca\u011f\u0131n\u0131, nas\u0131l token talep edilece\u011fini ve web apinin sundu\u011fu hizmetlerden nas\u0131l faydalan\u0131laca\u011f\u0131n\u0131 inceleyece\u011fiz.<\/p>\n<p>\u015eimdi \u00fczerine \u00e7al\u0131\u015faca\u011f\u0131m\u0131z web apiyi olu\u015ftural\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;Authorize]\r\n    public class PersonelController : ApiController\r\n    {\r\n        NorthwindEntities db = new NorthwindEntities();\r\n        public List&lt;Personel&gt; GetAll() =&gt; db.Personeller.OrderByDescending(p =&gt; p.PersonelID).Select(p =&gt; new Personel\r\n        {\r\n            Adi = p.Adi,\r\n            PersonelID = p.PersonelID,\r\n            SoyAdi = p.SoyAdi,\r\n            Unvan = p.Unvan\r\n        }).ToList();\r\n        public IHttpActionResult Post(Personel personel)\r\n        {\r\n            if (personel != null)\r\n            {\r\n                db.Personeller.Add(personel);\r\n                db.SaveChanges();\r\n                return Ok($&quot;{personel.Adi} {personel.SoyAdi} isimli personel ba\u015far\u0131yla eklenmi\u015ftir.&quot;);\r\n            }\r\n            return Ok(&quot;Personel eklenirken beklenmeyen bir hatayla kar\u015f\u0131la\u015f\u0131ld\u0131.&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<p>Bu, yukar\u0131da adresini verdi\u011fim makalede kulland\u0131\u011f\u0131m web api ile birebir ayn\u0131d\u0131r. Sadece tek fark, &#8220;Authorize&#8221; attribute&#8217;u ile i\u015faretlenmi\u015ftir yani bir authentication uygulanm\u0131\u015ft\u0131r. Bu i\u015flemle alakal\u0131 herhangi bir bilginiz yoksa <a href=\"http:\/\/www.gencayyildiz.com\/blog\/asp-net-mvc-web-api-token-authentication\/\" rel=\"noopener\" target=\"_blank\">buradaki<\/a> makaleyi detayl\u0131 okuman\u0131z\u0131 \u00f6neririm.<\/p>\n<p>Olas\u0131 &#8220;Access-Control-Allow-Origin&#8221; hatalar\u0131na kar\u015f\u0131 \u00f6nceki makalemde bahsetti\u011fim gibi &#8220;WebApiConfig&#8221; dosyas\u0131nda gerekli ayarlar\u0131 yapt\u0131\u011f\u0131n\u0131z\u0131 varsayarak, web apiden token talep edebilmek i\u00e7in a\u015fa\u011f\u0131daki Ajax komutlar\u0131n\u0131 yaz\u0131yorum.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            $(&quot;#btnTokenAl&quot;).click(function () {\r\n                var userName = $(&quot;#txtUserName&quot;).val();\r\n                var password = $(&quot;#txtPassword&quot;).val();\r\n                $.ajax({\r\n                    url: &quot;http:\/\/localhost:53156\/token&quot;,\r\n                    type: &quot;POST&quot;,\r\n                    crossDomain: true,\r\n                    data: {\r\n                        username: userName,\r\n                        password: password,\r\n                        grant_type: &quot;password&quot;\r\n                    },\r\n                    dataType: &quot;json&quot;,\r\n                    success: function (data) {\r\n                        localStorage.setItem(&quot;Token&quot;, JSON.stringify(data));\r\n                        $(&quot;#access_token&quot;).fadeIn(100, function () {\r\n                            $(&quot;#access_token&quot;).append(&quot;&lt;br&gt;&quot; + data.access_token);\r\n                            $(&quot;#btnTokenAl&quot;).prop(&quot;disabled&quot;, true);\r\n                        });\r\n                    },\r\n                    error: function (xhr, status, error) {\r\n                        alert(&quot;Hata : &quot; + error);\r\n                    }\r\n                });\r\n            });\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &lt;div&gt;\r\n        &lt;h2&gt;Get Token&lt;\/h2&gt;\r\n        Username : &lt;input type=&quot;text&quot; id=&quot;txtUserName&quot; \/&gt;&lt;br \/&gt;\r\n        Password : &lt;input type=&quot;text&quot; id=&quot;txtPassword&quot; \/&gt;&lt;br \/&gt;\r\n        &lt;button id=&quot;btnTokenAl&quot;&gt;Get Token&lt;\/button&gt;\r\n        &lt;div id=&quot;access_token&quot; style=&quot;color:antiquewhite;font-size:10px;display:none;&quot;&gt;&lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n<\/pre>\n<p><a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme.gif\" alt=\"Ajax \u0130le Token Authentication Uygulanan Web API Tetikleme\" width=\"480\" height=\"180\" class=\"aligncenter size-full wp-image-8470\" \/><\/a><br \/>\nEvet, g\u00f6rd\u00fc\u011f\u00fcn\u00fcz gibi token&#8217;\u0131 elde edebiliyoruz ve bu elde etti\u011fimiz token&#8217;\u0131 localStorage&#8217;a at\u0131yoruz. \u015eimdi bu token ile web apiye ula\u015f\u0131p, hizmetlerinden faydalanal\u0131m.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n            $(&quot;#btnGetPersoneller&quot;).click(function () {\r\n                $(&quot;#allPersonel&quot;).html(&quot;&quot;);\r\n                var token = $.parseJSON(localStorage.getItem(&quot;Token&quot;)).access_token;\r\n                $.ajax({\r\n                    url: &quot;http:\/\/localhost:53156\/api\/personel\/GetAll&quot;,\r\n                    type: &quot;GET&quot;,\r\n                    crossDomain: true,\r\n                    dataType: &quot;json&quot;,\r\n                    headers: {\r\n                        &quot;accept&quot;: &quot;application\/json&quot;,\r\n                        &quot;content-type&quot;: &quot;application\/json&quot;,\r\n                        &quot;authorization&quot;: &quot;Bearer &quot; + token\r\n                    },\r\n                    success: function (data) {\r\n                        $.each(data, function (IndexNo, Deger) {\r\n                            $(&quot;#allPersonel&quot;).append(Deger.Adi + &quot; &quot; + Deger.SoyAdi + &quot;&lt;br&gt;&quot;);\r\n                        });\r\n                    },\r\n                    error: function (xhr, status, error) {\r\n                        alert(&quot;Hata : &quot; + error);\r\n                    }\r\n                });\r\n            });\r\n<\/pre>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &lt;div&gt;\r\n        &lt;h2&gt;Get&lt;\/h2&gt;\r\n        &lt;button id=&quot;btnGetPersoneller&quot;&gt;Get All&lt;\/button&gt;\r\n        &lt;div id=&quot;allPersonel&quot; style=&quot;color:chocolate;font-size:12px;&quot;&gt;&lt;\/div&gt;\r\n    &lt;\/div&gt;\r\n<\/pre>\n<p>Dikkat ederseniz e\u011fer; &#8220;headers&#8221; \u00f6zelli\u011fine gerekli token bilgilendirmesini sa\u011flayacak &#8220;authorization&#8221;, &#8220;content-type&#8221; ve &#8220;accept&#8221; bilgisi belirtilmektedir. Bu \u015fekilde projemizi kaydedip, \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda;<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme.png\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme.png\" alt=\"Ajax \u0130le Token Authentication Uygulanan Web API Tetikleme\" width=\"437\" height=\"229\" class=\"aligncenter size-full wp-image-8472\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme.png 437w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme-300x157.png 300w\" sizes=\"auto, (max-width: 437px) 100vw, 437px\" \/><\/a><br \/>\nhatas\u0131yla kar\u015f\u0131la\u015f\u0131lacakt\u0131r.<br \/>\nEvet&#8230; Tekrar, domainler aras\u0131 etkile\u015fim s\u00fcrecinde g\u00fcvenlik kontrolleri mevzusunu bar\u0131nd\u0131ran hatalarla kar\u015f\u0131 kar\u015f\u0131yay\u0131z.<br \/>\n&#8220;<em><strong>Eee hoca, biz bu hatadan ka\u00e7\u0131nmak i\u00e7in yukar\u0131da bahsetti\u011fin bir \u00f6nceki yaz\u0131daki tekni\u011fi uygulam\u0131\u015ft\u0131k<\/strong><\/em>&#8221; diye s\u00f6ylendi\u011finizi duyar gibiyim. Evet, hakl\u0131s\u0131n\u0131z. S\u00f6yledi\u011fim tekni\u011fi uygulam\u0131\u015f olabilirsiniz. Lakin \u015fu anki durumun gereksinimleri ile bir \u00f6nceki yaz\u0131daki gereksinimler aras\u0131nda olduk\u00e7a fark oldu\u011funu biliyorsunuz. Bizler \u015fuanda bir g\u00fcvenlik uygulanm\u0131\u015f web api \u00fczerinde yetkilendirme elde etmeye \u00e7al\u0131\u015fmaktay\u0131z. Dolay\u0131s\u0131yla, bu yetkilendirmenin d\u0131\u015f\u0131nda g\u00fcvenli\u011finde getirisi olan ek u\u011fra\u015flar olacakt\u0131r ve bu u\u011fra\u015flardan \u00f6ncelikli olan\u0131da i\u015fte size \u00f6nceki yaz\u0131da bahsetmi\u015f oldu\u011fum y\u00f6ntemdir. \u015eimdi bunun d\u0131\u015f\u0131nda web api \u00fczerinde a\u015fa\u011f\u0131daki \u00e7al\u0131\u015fmay\u0131 ger\u00e7ekle\u015ftirmeniz yeterli olacakt\u0131r.<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    &#x5B;EnableCors(origins: &quot;*&quot;, headers: &quot;*&quot;, methods: &quot;*&quot;)]\r\n    &#x5B;Authorize]\r\n    public class PersonelController : ApiController\r\n    {\r\n        .\r\n        .\r\n        .\r\n    }\r\n<\/pre>\n<p>G\u00f6rd\u00fc\u011f\u00fcn\u00fcz \u00fczere web api \u00fczerine &#8220;[EnableCors(origins: &#8220;*&#8221;, headers: &#8220;*&#8221;, methods: &#8220;*&#8221;)]&#8221; attributeunu eklersek e\u011fer bu olas\u0131 hatadan da kurtulmu\u015f olaca\u011f\u0131z.<\/p>\n<p>Projeyi tekrardan kaydedip, \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131m\u0131zda ve gerekli token\u0131 talep ettikten sonra ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 g\u00f6receksiniz.<br \/>\n<a href=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme-1.gif\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2018\/07\/Ajax-\u0130le-Token-Authentication-Uygulanan-Web-API-Tetikleme-1.gif\" alt=\"Ajax \u0130le Token Authentication Uygulanan Web API Tetikleme\" width=\"420\" height=\"260\" class=\"aligncenter size-full wp-image-8476\" \/><\/a><\/p>\n<p>Sonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar dilerim&#8230;<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bir \u00f6nceki Ajax \u0130le Web API Tetikleme ba\u015fl\u0131kl\u0131 yaz\u0131mda Ajax ile web apilere nas\u0131l ba\u011flant\u0131 kuruldu\u011funu ve nas\u0131l tetiklendi\u011fini de\u011ferlendirmi\u015ftik. Bu i\u00e7eri\u011fimizde ise Token Authentication uygulanan web apilere tekrar Ajax ile nas\u0131l ba\u011flan\u0131laca\u011f\u0131n\u0131,&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":3014,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,2402],"tags":[2432,2431,2428,2430,2399],"class_list":["post-8465","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ajax","category-web-api","tag-ajax-ile-token-authentication","tag-ajax-token-authentication","tag-ajax-web-api","tag-token-authentication-web-api-tetikleme","tag-web-api"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8465","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=8465"}],"version-history":[{"count":9,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8465\/revisions"}],"predecessor-version":[{"id":8477,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/8465\/revisions\/8477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/3014"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=8465"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=8465"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=8465"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}