تصویر شیرین عبدالهی

در مطالب قبل راجع به چگونگی ساخت یک سرویس و ارسال درخواست به آن، ساخت یک محتوا ، آپلود فایل و ... صحبت کردیم.همانطور که احتمالا به این موضوع برخوردید، درخواست های شما توسط کاربر ناشناس وارد سیستم شده و مثلا برای ساخت محتوا نیازمند دادن دسترسی ساخت محتوا به کاربر ناشناس میباشید.

در این مطلب روش  session را برای سرویس خود فعال میکنیم و کاربر سرویس بایستی قبل از ارسال درخواست های معمول به سرویس، توسط اکانت دروپالی خود در سرویس لاگین کند.

گام اول: فعال کردن احراز هویت session در سرویس

سرویسی که در مرحله قبل ساخته بودیم را edit کرده و در قسمت  Authenticationآن، تیک Session authentication را میزنیم.

گام دوم: قبل از ارسال هر درخواستی به سرویس، مطمین میشویم که منبع user نیز برای سرویس فعال است.سپس با post کردن نام کاربری و کلمه عبور دروپالی خود به www.example.com/PATHTOENDPOINT/user/login  در سیستم وارد میشویم.

{"username":"USERNAME","password":"PASSWORD"}

در جواب سرویس پاسخی ارسال میکند که شامل sessid،session_name  و token و سایر اطلاعات کاربریست که توسط آن وارد شده ایم.

گام سوم: توسط اطلاعاتی بالا، header های Cookie و X-CSRF-Token را به صورت زیر ساخته و در درخواست های دیگر توسط این header ها خود را به سرویس معرفی مینماییم.

Header Name: Cookie

Header Value: session_name=sessid

برای مثال بالا :

Cookie:"SESSf92acb4d1584eaf4da318184fe26701c=oVBX34HOEiNuzkGYH6aulibZBYmKeQw2LQw67zcwJVU"

 

Header Name: X-CSRF-Token
Header Value: token

برای مثال بالا:

 

X-CSRF-Token: "VUfKQx30MI2maAquJJ3WmFiKH1uPx-YWLLJoXTWgCm4"

 

با ارسال این header ها درخواست های بعدی ارسال شده به سرویس ناشناس نبوده و دیگر نیازی نیست مجوز های کاربر ناشناس را به ساخت محتواها و ... بدهید.

توجه کنید که اگر session authentication سرویس را فعال کرده ولی header های گفته شده را به درخواست های خود اضافه نکنید، با خطای زیر مواجه خواهید شد.این خطا نشانگر آن است که header ها به درخواست وصل نشده یا محتوای آنها معتبر نیست.

401 Unauthorized: CSRF validation failed

افزودن نظر جدید