Abolfazl
10 ماه پیش توسط Abolfazl مطرح شد
4 پاسخ

چک کردن دسترسی یوزر به صفحاتی ک حتما یوزر لاگین کنه در nodejs و vuejs

سلام

من یه وب سایت دارم که بک اند با nodejs و کلاینت با vuejs زده شده
دارم روی عملیات های احراز هویتش کار میکنم و یه مشکلی ذهنمو درگیر کرده

من وقتی یوزر لاگین میکنه یک کوکی که محتوای اون شامل یک توکن از اطلاعات کاربر هست ذخیره میشه

حالا یه سری صفحات دارم مثل
/profile
/dashboard
/account/pakcage
/account/word
که باید چک کنم ایا توکن کاربر درست هست یا نه که به این صفحات هدایت بشه یا به /login هدایت بشه
فکر میکنم راه درست این هست که در express اون url هایی که بالا نوشتم رو کنترل کنم ولی نمیدونم چجوری چون خب کلاینت روی یه پورت دیگه (از localhost)و سرور روی یک پورت جدا و من نمیتونم به url هایی که توسط vue پشتیبانی میشه رو در nodejs دسترسی داشته باشم
ولی راه دیگه ای هست که اینه که هر موقع در کلاینت این url های پیج های بالا که نوشتم باز شدن یک ریکوئست به سرور شامل مقدار توکن که از کوکی در سمت کلاینت گرفته شده ارسال بشه و اون جا صحت درستی توکن بررسی بشه اگه درست نبود کاربر به /login هدایت بشه که فکر نمیکنم راه درستی باشه چون ممکنه تعداد صفحات زیاد باشه

دوستان لطفا راه درست رو بهم بگید و راهنماییم کنید مرسی
@Raymond
@MortezaVaezi
@Pouyab
@FullStack
@Farzadameri
@Arshiamohammadei
@ossvahid
@hussain2
@magicaldev1
@mparsa1372


ثبت پرسش جدید
oss_vahid
تخصص : wordpress developer
@ossvahid 10 ماه پیش مطرح شد
-2

راه دیگه ای هست که اینه که هر موقع در کلاینت این url های پیج های بالا که نوشتم باز شدن یک ریکوئست به سرور شامل مقدار توکن که از کوکی در سمت کلاینت گرفته شده ارسال بشه و اون جا صحت درستی توکن بررسی بشه اگه درست نبود کاربر به /login هدایت بشه که

همین راه درست هست برادر حداقل در php که اینطوره..

مسئله رو پیچیده نکنید یک تابع بنوسید و اونو هرجا که لازمه در بالای صفحه قرار بدید تا عملیاتی که گفتید رو انجام بده


پویا باقری
تخصص : برنامه نویس وب
@Pouyab 10 ماه پیش آپدیت شد
-1

سلام.
درون url هایی که نام بردید protected resource های شما وجود دارند و حتما باید دسترسی از سمت سرور محدود بشه به درخواست هایی که توکن معتبر همراه خودشون دارند. پس بله باید url رو کنترل کنید.
اگر از توکن stateless مثل JWT استفاده میکنید نیازی به ارسال درخواست تطابق توکن به سمت سرور ندارید. اگر از statefull استفاده میکنید درخواست تطابق رو حتما باید ارسال کنید. که پیشنهاد میکنم از JWT استفاده کنید که به مراتب هزینه کمتری داره. (البته میتونید JWT رو هم ذخیره کنید که خودشو تامین امنیتش یه داستان جداست)


محمد حسین
تخصص : mevn stack
@saghari 10 ماه پیش آپدیت شد
0

همون راه دوم درسته برای سایت rest api
تو هدر درخواستی که میفرستی این رو میذاری

Authorization: Bearer <token>

بعد از bearer توکنت رو میذاری
یه میدلویر میسازی که توش توکن رو از هدر بگیره

const token = req.headers['authorization']

اگه توکنی نبود ارور 403 بده و توی کلاینت روت رو تغییر بده به لاگین غیر از این توکن رو وریفای کنه وreq.user رو برابر توکن دیکد شده کنه
بعدهر جا لازم بود توکن رو چک کنی توی روتر اول این میدلویر رو کال میکنی بعد کنترلر اون روت رو بعدش توی کنترلر اون روت میتونی از طریق req.user به توکن دیکد شده دسترسی داشته باشی

router.get('/dashboard', authMiddleware, dashboardController)

Abolfazl
تخصص : Frount-End Web Developer
@abolfazljamshidi101010 10 ماه پیش مطرح شد
0

من این کار رو میخوام انجام ببینم ولی ببینید این بخشش برام روشن نیست
وقتی router.get('/dashboard', authMiddleware, dashboardController)
زده میشه در واقع داریم میگیم منتظر یه درخواست از
http://localhost:3000/dashboard باش که این روت سرور من هست
در حالیکه یوزر در اصل به
http://localhost:5173/dashboard که آدرس کلاینتم هست
دسترسی داره


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

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