امیر حسین شریفی
4 سال پیش توسط امیر حسین شریفی مطرح شد
9 پاسخ

گرفتن توکن jwt و ارسال توسط axios

سلام من از blade برای پروژه ام استفاده میکنم. منتها برای ارسال فرم هام از api استفاده میکنم.

کجا باید توکن رو ذخیره و به axios پاس بدم؟

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


ثبت پرسش جدید
amir
@jojocs6800 4 سال پیش مطرح شد
1

کاربر کار خاصی با توکن نمیتونه انجام بده چون توکن نیاز به secret key داره تا مقدار ذخیره شده داخلش دست پیدا کرد. مثل سیستم سشن و کوکی
Access-Control-Allow-Origin برای موقعی هست که سرور کلاینت با سرور بک اند متفاوت باشه. اگه کل اپلیکیشن روی یک سرور اجرا میشه نیازی به این کار نیست
لوکال استوریج که نوشتن و خوندنش آسون هست.
اگر هم روی کوکی ذخیره میکنی نوشتنش داخل لاراول نمیدونم چجوریه .. موقع خوندن کوکی ها تو جاوا اسپریپت از این استفاده کن:

function getCookiesObj(){
    const cookies = document.cookie.split(';');
    const cookiesArr = cookies.map(cookie => cookie.split('='));
    return Object.fromEntries(cookiesArr);
}

حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 4 سال پیش آپدیت شد
1

سلام توکنو در localstorag مرورگر ذخیرش کن

localStorage.setItem('access_token', value_token);

و موقع استفاده اینطوری به دستش میاری

var token = localStorage.getItem('access_token');

اینطوری هم حذفش کن

localStorage.removeItem('access_token');

و انیطوری به سرور پاسش بده

var token = localStorage.getItem('access_token');
axios.get('/api/v1/logout', {
    headers: {
        Accept: 'Application/json',
        Authorization: 'Bearer ' + token
    }
})
.then(res => {

})

amir
@jojocs6800 4 سال پیش مطرح شد
0

بستگی داره. اگه از react استفاده میکنی توی state manager ذخیره کن.مثل redux. اگرنه کوکی یا localStorage


امیر حسین شریفی
تخصص : Web Developer
@amirsharifi 4 سال پیش مطرح شد
0

@jojocs6800
@hosseinshirinegad98
مرسی از پاسخ هاتون.
اول اینکه از vue دارم استفاده میکنم

لوکال استوریج امن هست؟ یا اصلا این توکن دست کاربر بیافته کار خاصی میتونی کنه؟

اگه من Access-Control-Allow-Origin هم تعیین کنم مورد امنیتی پیش میاد؟

چون من باید توکن رو پاس بدم به html بعد بدم به axios چون که از blade استفاده میکنم.


عرفان
تخصص : Python
@erf 4 سال پیش مطرح شد
1

سلام هر چی سمت کاربر باشه رو امنیتش نمی شه تضمین کرد یعنی هیچ وقت نباید به کاربر ( هکر اعتماد کرد )
لوکال استورج ،سشن استورج و... همه اینا با F-12 قابل نمایشن تو تب اپلیکیشن
اما به امنیت خاصی نیاز نداره اون توکن به درد کسی نمی خوره اگه بکند درست حسابی باشع


amir
@jojocs6800 4 سال پیش مطرح شد
1

کاربر کار خاصی با توکن نمیتونه انجام بده چون توکن نیاز به secret key داره تا مقدار ذخیره شده داخلش دست پیدا کرد. مثل سیستم سشن و کوکی
Access-Control-Allow-Origin برای موقعی هست که سرور کلاینت با سرور بک اند متفاوت باشه. اگه کل اپلیکیشن روی یک سرور اجرا میشه نیازی به این کار نیست
لوکال استوریج که نوشتن و خوندنش آسون هست.
اگر هم روی کوکی ذخیره میکنی نوشتنش داخل لاراول نمیدونم چجوریه .. موقع خوندن کوکی ها تو جاوا اسپریپت از این استفاده کن:

function getCookiesObj(){
    const cookies = document.cookie.split(';');
    const cookiesArr = cookies.map(cookie => cookie.split('='));
    return Object.fromEntries(cookiesArr);
}

محمد عابدی
تخصص : Senior Web Developer
@abedim910 4 سال پیش مطرح شد
1

@amirsharifi درود
کاری که شما میکنید غیر استاندارد نیست و تمامی سرویس های بزرگ هم اکسس توکن کلاینت قابل دسترس هست چون بالاخره یک پارامتر باید باشه سمت کلاینت که شما بخوای با استفاده از اون اعتبارسنجی بکنید.
اگر خیلی مسئله براتون مهمه میتونید زمان ایجاد توکن یوزر ایجنت کاربر رو ذخیره کنید و به کاربری که با یوزر ایجنت متفاوت از همون توکن استفاده میکنه شک کنید و بهش دسترسی ندید. بسته به سیاست های خودتون هر کاری قابل انجامه


amir
@jojocs6800 4 سال پیش مطرح شد
1

اینم یه مقایسه از روش های مختلف ذخیره سمت کلاینت:
A Primer on the Different Types of Browser Storage


امیر حسین شریفی
تخصص : Web Developer
@amirsharifi 4 سال پیش مطرح شد
0

@jojocs6800
مرسی لطف کردین.
دوستان مرسی از پاسخ هاتوتن.


moh_asl22
@mohasl22 4 سال پیش مطرح شد
1

سلام شاید با هش کردن خود مقدار لوکال استوریج بشه جلوی لو رفتن این قضیه رو گرفت یعنی مقدار برگشتی رو هش کرد بعد در زمان ارسال دیکیریپتش کرد


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام