Forwarded from DevTwitter | توییت برنامه نویسی
تفاوت Access Token و Refresh Token به زبان ساده
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
@DevTwitter | <Hossein Molaei/>
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
@DevTwitter | <Hossein Molaei/>
Forwarded from GitHub Trending Daily
🔥 New GitHub Trending Repositories 🔥
Found 6 new trending repositories:
1. nocobase by nocobase
📝 NocoBase is the most extensible AI-powered no-code/low-code platform for building business applicati...
💻 TypeScript | ⭐ 17,700 | 🌟 Today: 220
🔗 Link
2. alertmanager by prometheus
📝 Prometheus Alertmanager
💻 Go | ⭐ 7,299 | 🌟 Today: 3
🔗 Link
3. gopeed by GopeedLab
📝 A modern download manager that supports all platforms. Built with Golang and Flutter.
💻 Dart | ⭐ 21,052 | 🌟 Today: 161
🔗 Link
4. vertex-ai-creative-studio by GoogleCloudPlatform
📝 GenMedia Creative Studio is a Vertex AI generative media user experience highlighting the use of Ima...
💻 Jupyter Notebook | ⭐ 520 | 🌟 Today: 7
🔗 Link
5. Parabolic by NickvisionApps
📝 Download web video and audio
💻 C++ | ⭐ 4,104 | 🌟 Today: 14
🔗 Link
6. localstack by localstack
📝 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline
💻 Python | ⭐ 61,147 | 🌟 Today: 25
🔗 Link
🔘 @github_trending_daily
Found 6 new trending repositories:
1. nocobase by nocobase
📝 NocoBase is the most extensible AI-powered no-code/low-code platform for building business applicati...
💻 TypeScript | ⭐ 17,700 | 🌟 Today: 220
🔗 Link
2. alertmanager by prometheus
📝 Prometheus Alertmanager
💻 Go | ⭐ 7,299 | 🌟 Today: 3
🔗 Link
3. gopeed by GopeedLab
📝 A modern download manager that supports all platforms. Built with Golang and Flutter.
💻 Dart | ⭐ 21,052 | 🌟 Today: 161
🔗 Link
4. vertex-ai-creative-studio by GoogleCloudPlatform
📝 GenMedia Creative Studio is a Vertex AI generative media user experience highlighting the use of Ima...
💻 Jupyter Notebook | ⭐ 520 | 🌟 Today: 7
🔗 Link
5. Parabolic by NickvisionApps
📝 Download web video and audio
💻 C++ | ⭐ 4,104 | 🌟 Today: 14
🔗 Link
6. localstack by localstack
📝 💻 A fully functional local AWS cloud stack. Develop and test your cloud & Serverless apps offline
💻 Python | ⭐ 61,147 | 🌟 Today: 25
🔗 Link
🔘 @github_trending_daily
Forwarded from DevTwitter | توییت برنامه نویسی
آیا از دوستان کسی هست که یک اکانت reddit فعال داشته باشه؟
اگر هست برای همکاری به این آیدی پیام بده.
باتشکر.
*دقت کنید، اکانت فعال
نه که صرفا یه لکانت داشته باشید
@dvtwi
اگر هست برای همکاری به این آیدی پیام بده.
باتشکر.
*دقت کنید، اکانت فعال
نه که صرفا یه لکانت داشته باشید
@dvtwi
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from Linuxor ?
یه روش جالب برای خالی کردن فوری رم
مرورگرا بیشترین رم رو مصرف میکنن، این ابزار ميآد و تب های مرورگرتون رو کیل میکنه (تب ها خودشون انگار یه برنامه مجزان و یه پروسس به حساب میآن و میشه کیلشون کرد)، وقتی که تب ها کیل بشن مرورگر همچنان بازه یعنی عملا چیز خاصی از دست ندادید و میتونید به بقیه کاراتون برسید فقط برای استفاده از مرورگر دوباره نیاز به رفرش داره اینطوری میتونید مرورگر رو باز نگه دارید و به کارای دیگتون برسید بدون مصرف رم.
نصب روی ویندوز، مک و لینوکس :
npm install --global kill-tabs
توی خط فرمان این دستور رو کافیه بزنید :
kill-tabs
@Linuxor
مرورگرا بیشترین رم رو مصرف میکنن، این ابزار ميآد و تب های مرورگرتون رو کیل میکنه (تب ها خودشون انگار یه برنامه مجزان و یه پروسس به حساب میآن و میشه کیلشون کرد)، وقتی که تب ها کیل بشن مرورگر همچنان بازه یعنی عملا چیز خاصی از دست ندادید و میتونید به بقیه کاراتون برسید فقط برای استفاده از مرورگر دوباره نیاز به رفرش داره اینطوری میتونید مرورگر رو باز نگه دارید و به کارای دیگتون برسید بدون مصرف رم.
نصب روی ویندوز، مک و لینوکس :
npm install --global kill-tabs
توی خط فرمان این دستور رو کافیه بزنید :
kill-tabs
@Linuxor
Forwarded from DevTwitter | توییت برنامه نویسی
تو این ویدیو از صفر رفتم سراغ ساخت یه DNS سرور با dnsmasq. تنظیمش، راهاندازیش، و بالا اومدن واقعی سرویس رو قدمبهقدم نشون دادم
https://youtu.be/Nm8bThLf1ZE?si=YlxWxYw26ZiFObpA
@DevTwitter | <Mani/>
https://youtu.be/Nm8bThLf1ZE?si=YlxWxYw26ZiFObpA
@DevTwitter | <Mani/>
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
🔶 ربات تلگرام supportBot
این پروژه یک ربات پشتیبانی تلگرام مبتنی بر Cloudflare Workers است که برای مدیریت ارتباط بین کاربران و ادمین پیادهسازی شده است. ربات پیامهای کاربران (متن و عکس) را به ادمین فوروارد میکند و ادمین میتواند به آنها پاسخ دهد، کاربران را مسدود یا آزاد کند، پیام همگانی ارسال کند و کاربران غیرفعال را پاکسازی نماید. ربات از دو زبان فارسی و انگلیسی پشتیبانی میکند و افزودن زبان جدید به سادگی امکانپذیر است.
گیت هاب :
https://github.com/Argh94/supportBot
#معرفی
@TheRaymondDev
این پروژه یک ربات پشتیبانی تلگرام مبتنی بر Cloudflare Workers است که برای مدیریت ارتباط بین کاربران و ادمین پیادهسازی شده است. ربات پیامهای کاربران (متن و عکس) را به ادمین فوروارد میکند و ادمین میتواند به آنها پاسخ دهد، کاربران را مسدود یا آزاد کند، پیام همگانی ارسال کند و کاربران غیرفعال را پاکسازی نماید. ربات از دو زبان فارسی و انگلیسی پشتیبانی میکند و افزودن زبان جدید به سادگی امکانپذیر است.
گیت هاب :
https://github.com/Argh94/supportBot
#معرفی
@TheRaymondDev
GitHub
GitHub - Argh94/supportBot: این پروژه یک ربات پشتیبانی تلگرام مبتنی بر Cloudflare Workers است که برای مدیریت ارتباط بین کاربران…
این پروژه یک ربات پشتیبانی تلگرام مبتنی بر Cloudflare Workers است که برای مدیریت ارتباط بین کاربران و ادمین پیادهسازی شده است. ربات پیامهای کاربران (متن و عکس) را به ادمین فوروارد میکند و ادمین ...
Forwarded from Laravel News
Background Queue Connection in Laravel 12.37 https://laravel-news.com/laravel-12-37-0
Laravel News
Background Queue Connection in Laravel 12.37 - Laravel News
The Laravel team released version 12.37.0 this week, with new background queue driver, a Factory insert method, a ucwords() string method, and more.
Forwarded from 🎄 یک برنامه نویس تنبل (Lazy 🌱)
Forwarded from DevTwitter | توییت برنامه نویسی
اگر توی پروژه هاتون نیاز به یک component library دارید، heroui میتونه یه گزینه خیلی خوب باشه
کامپوننت های زیاد و کاملی داره که میتونید ازشون برای ساختن یک پروژه large scale استفاده کنید، همچنین کاستومایز کردن این کامپوننت ها و واریانت هاشون خیلی ساده هست
همچنین سورس کد بسیار تمیزی داره، پیشنهاد میدم سورس کد این کتابخونه رو توی گیتهاب حتما بخونید چون تست های خیلی تمیز و یکپارچه ای با استفاده از RTL و Vitest نوشته شده که میتونه بسیار آموزنده باشه
سورس کد:
https://github.com/heroui-inc/heroui
@DevTwitter | <sepehr doraghi/>
کامپوننت های زیاد و کاملی داره که میتونید ازشون برای ساختن یک پروژه large scale استفاده کنید، همچنین کاستومایز کردن این کامپوننت ها و واریانت هاشون خیلی ساده هست
همچنین سورس کد بسیار تمیزی داره، پیشنهاد میدم سورس کد این کتابخونه رو توی گیتهاب حتما بخونید چون تست های خیلی تمیز و یکپارچه ای با استفاده از RTL و Vitest نوشته شده که میتونه بسیار آموزنده باشه
سورس کد:
https://github.com/heroui-inc/heroui
@DevTwitter | <sepehr doraghi/>
Forwarded from IRCF | اینترنت آزاد برای همه
Forwarded from DevTwitter | توییت برنامه نویسی
https://github.com/archmmd/Ultimate-RAT-Collection
چیکار میکنی از افسردگی در بیایی؟
- گیتهاب بالا پایین میکنم ریپوهارو بررسی میکنم :)))
@DevTwitter | <بـےاعصاب/>
چیکار میکنی از افسردگی در بیایی؟
- گیتهاب بالا پایین میکنم ریپوهارو بررسی میکنم :)))
@DevTwitter | <بـےاعصاب/>
Forwarded from Reza
AMD: پشتیبانی RX 5000/6000 روی ویندوز کم میشه؟
AMD پشتیبانی درایورهای ویندوزی RX 5000 و 6000 (RDNA) 1 و 2 رو به "maintenance mode" برده، یعنی فیکسهای امنیتی و باگها ادامه داره اما بهینهسازیهای جدید بازیها متوقف میشه برای تمرکز بیشتر روی RDNA 3 و 4. اما برای لینوکس، تغییری نداره چون درایورهای اوپنسورس مثل RADV و amdgpu توسط جامعه و AMD نگه داشته میشن و حتی بهتر از ویندوز توجه و ساپورت میکنن. این یعنی گیمرهای لینوکسی با کارتهای قدیمیتر همچنان آپدیت میگیرن بدون مشکل.
بیشتر بدون: لینک Phoronix
@GamerTux | @GamerTuxChat
AMD پشتیبانی درایورهای ویندوزی RX 5000 و 6000 (RDNA) 1 و 2 رو به "maintenance mode" برده، یعنی فیکسهای امنیتی و باگها ادامه داره اما بهینهسازیهای جدید بازیها متوقف میشه برای تمرکز بیشتر روی RDNA 3 و 4. اما برای لینوکس، تغییری نداره چون درایورهای اوپنسورس مثل RADV و amdgpu توسط جامعه و AMD نگه داشته میشن و حتی بهتر از ویندوز توجه و ساپورت میکنن. این یعنی گیمرهای لینوکسی با کارتهای قدیمیتر همچنان آپدیت میگیرن بدون مشکل.
بیشتر بدون: لینک Phoronix
@GamerTux | @GamerTuxChat
Forwarded from DevTwitter | توییت برنامه نویسی
ریپو ناکست پورتفولیوی public
این ریپو رو با نسل تازهی ابزارهای فرانتاند (latest versions) بازنویسی کردم
کاملاً SSR-محور، سریع، و با پشتیبانی کامل از i18n، RTL و Dark Mode پیشفرض.
Live Demo: aliarghyani.vercel.app
GitHub: https://github.com/aliarghyani/nuxt-portfolio
Tech Stack
- Nuxt 4.x (Vue 3 + Vite)
- Nuxt UI 4.x
- Tailwind CSS 4.1.x
- TypeScript 5.9.x
- nuxtjs/i18n 10.x + nuxtjs/color-mode 3.x
- nuxt/image 1.x + VueUse 13.x
چرا نسخههای جدید بهترند؟
Nuxt 4
رندر سریعتر، SSR/Edge بهتر با Nitro جدید، HMR پایدارتر و TypeScript قویتر.
Nuxt UI 4
تمینگ بر پایه Design Tokens، کامپوننتهای SSR-friendly و API سازگار با Tailwind v4.
Tailwind 4
موتور جدید مبتنی بر CSS Variables، خروجی سبکتر و JIT سریعتر.
مسیرهای چندزبانه , lazy loading و مدیریت دقیق RTL/LTR.
بهینهسازی خودکار تصاویر برای عملکرد بهتر.
حالت تاریک همگام در SSR و کلاینت.
تمرکز این نسخه روی performance، DX، و معماری ماژولار بوده
بعدها خیلی آپدیتهای دیگه براش میدم
یه بیس خوب برای پروژههای شخصی یا شرکتی روی Nuxt نسل جدید.
@DevTwitter | <Ali Arghyani/>
این ریپو رو با نسل تازهی ابزارهای فرانتاند (latest versions) بازنویسی کردم
کاملاً SSR-محور، سریع، و با پشتیبانی کامل از i18n، RTL و Dark Mode پیشفرض.
Live Demo: aliarghyani.vercel.app
GitHub: https://github.com/aliarghyani/nuxt-portfolio
Tech Stack
- Nuxt 4.x (Vue 3 + Vite)
- Nuxt UI 4.x
- Tailwind CSS 4.1.x
- TypeScript 5.9.x
- nuxtjs/i18n 10.x + nuxtjs/color-mode 3.x
- nuxt/image 1.x + VueUse 13.x
چرا نسخههای جدید بهترند؟
Nuxt 4
رندر سریعتر، SSR/Edge بهتر با Nitro جدید، HMR پایدارتر و TypeScript قویتر.
Nuxt UI 4
تمینگ بر پایه Design Tokens، کامپوننتهای SSR-friendly و API سازگار با Tailwind v4.
Tailwind 4
موتور جدید مبتنی بر CSS Variables، خروجی سبکتر و JIT سریعتر.
@nuxtjs/i18n 10 مسیرهای چندزبانه , lazy loading و مدیریت دقیق RTL/LTR.
@nuxt/image 1بهینهسازی خودکار تصاویر برای عملکرد بهتر.
@nuxtjs/color-mode 3حالت تاریک همگام در SSR و کلاینت.
تمرکز این نسخه روی performance، DX، و معماری ماژولار بوده
بعدها خیلی آپدیتهای دیگه براش میدم
یه بیس خوب برای پروژههای شخصی یا شرکتی روی Nuxt نسل جدید.
@DevTwitter | <Ali Arghyani/>
Forwarded from DevTwitter | توییت برنامه نویسی
چرا Go تا این حد سریع است ؟ پشت پردهی کامپایل و Runtime
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
@DevTwitter | <Erfan Yousefi/>
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
@DevTwitter | <Erfan Yousefi/>
Forwarded from محتوای آزاد سهراب (Sohrab)
Forwarded from Gopher Academy
چرا Go تا این حد سریع است ؟ پشت پردهی کامپایل و Runtime
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
<Erfan Yousefi/>
وقتی برای اولین بار دیدم برنامهی Go چقدر سریع اجرا میشه، کنجکاو شدم بدونم پشت داستان چیه
با توجه به مطالعه دایکیومنت های رسمی خود گو سعی کردم تمامی مباحثی که درک کردم به رو به ساده ترین شیوه ممکن براتون بنویسم و رفرنس ها رو هم در حد ممکن لابه لای بخش ها گذاشتم
لینک مقاله
<Erfan Yousefi/>
Linkedin
چرا Go تا این حد سریع است؟ پشت پردهی کامپایل و Runtime
(Why Go Is So Fast — The Compiler and Runtime Architecture) 🚀 مقدمه وقتی برنامهای با Go مینویسی و اجراش میکنی، اولین چیزی که چشمگیر میشه سرعت باورنکردنیه — نه فقط در زمان اجرا، بلکه حتی در مرحلهی build و compile. برخلاف زبانهایی مثل Python یا Node.
Forwarded from Software Engineer Labdon
تفاوت Access Token و Refresh Token به زبان ساده
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
<Hossein Molaei/>
در سیستمهای احراز هویت مدرن مثل Keycloak یا IdentityServer،
دوبار اسم «توکن» رو میشنویم:
ولی واقعاً فرقشون چیه؟
Access Token
توکن کوتاهمدتیه (مثلاً ۵ تا ۱۵ دقیقه) که بعد از لاگین کاربر صادر میشه.
هر بار که کاربر به API درخواست میفرسته، این توکن همراه درخواست میره تا سرور بفهمه کاربر کیه.
Refresh Token
طول عمر بیشتری داره (مثلاً ۳۰ دقیقه یا حتی چند ساعت).
اگر Access Token منقضی بشه، سیستم با استفاده از Refresh Token یه Access Token جدید میگیره
— بدون اینکه کاربر مجبور باشه دوباره لاگین کنه.
به زبان ساده Access Token مثل بلیط ورود به یک سالن هست ️
اما Refresh Token مثل کارت عضویت اون سالنه
باهاش میتونی هر بار بلیط جدید بگیری بدون ایستادن تو صف لاگین.
مزیت این روش:
امنیت بیشتر (Access Token کوتاهمدت و ایمنتره)
تجربه کاربری بهتر (کاربر کمتر لاگاوت میشه)
کنترل بهتر سمت سرور روی اعتبار توکنها
در پروژهی اخیرم با Keycloak این مکانیزم رو پیادهسازی کردم.
کاربر بعد از ثبتنام، هم در Keycloak و هم در SQL Server ذخیره میشه تا
میان سیستم احراز هویت و اپلیکیشن اصلی یکپارچگی کامل برقرار باشه.
هر وقت در مورد Authentication کار میکنی،
یادت باشه که هدف فقط «ورود کاربر» نیست —
بلکه «مدیریت ایمن و هوشمند عمر نشست (Session Lifecycle)» هست.
در دنیای Api ها ما موظفیم با توکن ها کار کنیم
در ریزور پیج ها یک ورودی هیدن داشتیم که مدیریت توسط آن توسط خود asp بود
اما در api ها مدیریت توکن ها با ماست
بهترین گزینه هم استفاده از IDP (Identity Provider) هاست چون هم فرانت و هم بک را برای ما پوشش میدهد.
<Hossein Molaei/>
Forwarded from Md Daily (Mahan)
This media is not supported in your browser
VIEW IN TELEGRAM
تا حالا فکر کردید وقتی تو «اسنپ» یا «گوگل مپس» مبدأ و مقصد رو میزنید، چطوری تو یه چشم به هم زدن «بهترین» مسیر رو از بین این همه کوچه و خیابون پیدا میکنه؟
یا مثلاً تو یه بازی کامپیوتری، اون هوش مصنوعی (AI) دشمن چطوری انقدر قشنگ شما رو پیدا میکنه و کوتاهترین راه رو برای رسیدن بهتون انتخاب میکنه؟
اینا همشون دارن یه مسئلهی معروف به اسم «پیدا کردن کوتاهترین مسیر» (Shortest Path) رو حل میکنن. تو این پست میخوایم بریم سراغ دوتا از غولهای حل این مسئله: دایکسترا (Dijkstra) و اِی-اِستار (A*).
1️⃣ الگوریتم دایکسترا (Dijkstra): کاوشگرِ وظیفهشناس (ولی کور!)
این الگوریتم که اسمش رو از خالقش، ادسخر دایکسترا، گرفته، کوتاهترین مسیر از مبدأ رو پیدا میکنه.
چطوری کار میکنه؟
✔️ از نقطهی شروع (Source) کارش رو شروع میکنه.
✔️ یه «صف اولویت» (Priority Queue) داره. کارش اینه که در هر مرحله، گرهی (node) رو برای بررسی انتخاب میکنه که کمترین هزینه (cost) رو از مبدأ داشته باشه.
✔️ این الگوریتم «کور» (Uninformed) ـه. یعنی چی؟ یعنی اصلاً نمیدونه مقصد کجاست! 😅
✔️ در نتیجه، جستجوش به صورت «یکنواخت» (مثل Uniform Cost Search) پخش میشه. کارش اینه که به صورت سیستماتیک کوتاهترین مسیر از مبدأ به همهی نقاط دیگه رو حساب کنه تا اینکه بالاخره اتفاقی به مقصد ما هم برسه.
نتیجه این روش چیه؟
مزیت: اینه که تضمین میکنه کوتاهترین و بهینهترین مسیر رو پیدا میکنه (بهش میگن Optimal)، البته به شرطی که وزن منفی (negative weight) تو گراف نداشته باشیم (مثلاً راهی که به جای هزینه داشتن، بهت زمان اضافه کنه!).
عیب: چون «کوره» و نمیدونه هدف کجاست، کلی زمان و انرژی صرف بررسی گرههایی میکنه که اصلاً در جهت مقصد نیستن. (مثلاً میخوای از تهران بری شمال، این بنده خدا همزمان مسیرهای به سمت اصفهان رو هم چک میکنه، چون شاید یه راه عجیبی از اونجا باشه!).
2️⃣ الگوریتم A* (A-Star): کاوشگرِ هوشمند (و هدفمند)
اِی-اِستار (A*) نسخهی باهوشتر و «زرنگ»ترِ دایکستراست. میتونیم بگیم A* همون دایکسترای خودمونه، فقط یه «قطبنما» یا «GPS» هم دستش گرفته.
چطوری کار میکنه؟
✔️ اِی-استار هم مثل دایکسترا، هزینهای که واقعاً تا الان طی کرده (یعنی مسافت واقعی از مبدأ تا گره فعلی) رو حساب میکنه. (ریاضیش رو بخوامی بگیم g(n)).
✔️ اما، برگ برندهاش اینجاست: اون یه «حدس هوشمندانه» (Heuristic) هم میزنه که چقدر فکر میکنه تا مقصد مونده. (ریاضیش رو بخوامی بگیم h(n)).
هیوریستیک یعنی چی؟
خیلی سادهست: در مسیریابی، بهترین هیوریستیک همون «فاصله خط صاف» خودمونه. یعنی تو نقشه یه خط صاف از جایی که هستی تا مقصد بکشی.
✔️ پس اِی-استار در هر قدم، میره سراغ گرهی که مجموعِ «هزینه واقعی تا اینجا» + «هزینه تخمینی تا مقصد» (f(n) = g(n) + h(n)) از همه کمتر باشه.
نتیجه این هوشمندی چیه؟
مزیت: چون «آگاه» (Informed) هست و یه «حس جهتیابی» داره، جستجوی خودش رو مستقیم میبره به سمت هدف. دیگه الکی همهجا رو نمیگرده و در نتیجه خیلی خیلی سریعتره و گرههای (nodes) کمتری رو بررسی میکنه.
عیب (یا نکته مهم): همهچی به «خوب» بودن اون حدس (Heuristic) بستگی داره. اگه هیوریستیک شما «قابل قبول» (Admissible) نباشه (یعنی بدبین باشه و فاصله رو بیشتر از حد واقعی حدس بزنه)، A* ممکنه گول بخوره و اصلاً جواب بهینه (Optimal) رو پیدا نکنه!
💡 خب، ما چی یاد گرفتیم؟ (Dijkstra vs A*)
دایکسترا: «کور»ـه و جستجوش (UCS) در تمام جهات پخشه. هدفش پیدا کردن کوتاهترین راه از مبدأ به همهی نقاطه.
اِی-اِستار: «هوشمند»ـه و با کمک هیوریستیک به سمت هدف میگرده. هدفش پیدا کردن کوتاهترین راه از مبدأ به یک مقصد مشخصه.
حالا یه نکته:
الگوریتم دایکسترا در واقع یه حالت خاص از الگوریتم A* هست!
چطوری؟ اگه توی A*، اون «حدس هوشمندانه» (h(n)) رو برای همهی گرهها صفر در نظر بگیری (یعنی عملاً بگی: «آقا من هیچ حدسی ندارم!»)، الگوریتم A* دقیقاً تبدیل میشه به دایکسترا!
پس کی از کدوم استفاده کنیم؟
برو سراغ Dijkstra:
* وقتی میخوای کوتاهترین مسیر از یک نقطه به تمام نقاط دیگه رو بدونی (مثلاً تو پروتکلهای روتینگ شبکه مثل OSPF که باید بدونن بهترین راه تا همهی روترهای دیگه چیه).
برو سراغ A*:
* وقتی یک مبدأ و یک مقصد مشخص داری (۹۹٪ کاربردهای ما مثل GPS، مسیریابی تو بازیها، رباتیک و...).
* وقتی سرعت برات مهمه و میتونی یه هیوریستیک خوب (مثل فاصله خط صاف) حساب کنی.
دفعهی بعدی که «نشان» رو باز کردید یا تو یه بازی مثل The Last of Us دیدید که دشمن چقدر هوشمندانه دنبالتون میاد، یادتون باشه که یه چیزی شبیه A* پشت صحنه داره کار میکنه.
—-
💡 مثل همیشه کنجکاو بمونید :)
🆔 @MdDaily
یا مثلاً تو یه بازی کامپیوتری، اون هوش مصنوعی (AI) دشمن چطوری انقدر قشنگ شما رو پیدا میکنه و کوتاهترین راه رو برای رسیدن بهتون انتخاب میکنه؟
اینا همشون دارن یه مسئلهی معروف به اسم «پیدا کردن کوتاهترین مسیر» (Shortest Path) رو حل میکنن. تو این پست میخوایم بریم سراغ دوتا از غولهای حل این مسئله: دایکسترا (Dijkstra) و اِی-اِستار (A*).
1️⃣ الگوریتم دایکسترا (Dijkstra): کاوشگرِ وظیفهشناس (ولی کور!)
این الگوریتم که اسمش رو از خالقش، ادسخر دایکسترا، گرفته، کوتاهترین مسیر از مبدأ رو پیدا میکنه.
چطوری کار میکنه؟
نتیجه این روش چیه؟
مزیت: اینه که تضمین میکنه کوتاهترین و بهینهترین مسیر رو پیدا میکنه (بهش میگن Optimal)، البته به شرطی که وزن منفی (negative weight) تو گراف نداشته باشیم (مثلاً راهی که به جای هزینه داشتن، بهت زمان اضافه کنه!).
عیب: چون «کوره» و نمیدونه هدف کجاست، کلی زمان و انرژی صرف بررسی گرههایی میکنه که اصلاً در جهت مقصد نیستن. (مثلاً میخوای از تهران بری شمال، این بنده خدا همزمان مسیرهای به سمت اصفهان رو هم چک میکنه، چون شاید یه راه عجیبی از اونجا باشه!).
2️⃣ الگوریتم A* (A-Star): کاوشگرِ هوشمند (و هدفمند)
اِی-اِستار (A*) نسخهی باهوشتر و «زرنگ»ترِ دایکستراست. میتونیم بگیم A* همون دایکسترای خودمونه، فقط یه «قطبنما» یا «GPS» هم دستش گرفته.
چطوری کار میکنه؟
هیوریستیک یعنی چی؟
خیلی سادهست: در مسیریابی، بهترین هیوریستیک همون «فاصله خط صاف» خودمونه. یعنی تو نقشه یه خط صاف از جایی که هستی تا مقصد بکشی.
نتیجه این هوشمندی چیه؟
مزیت: چون «آگاه» (Informed) هست و یه «حس جهتیابی» داره، جستجوی خودش رو مستقیم میبره به سمت هدف. دیگه الکی همهجا رو نمیگرده و در نتیجه خیلی خیلی سریعتره و گرههای (nodes) کمتری رو بررسی میکنه.
عیب (یا نکته مهم): همهچی به «خوب» بودن اون حدس (Heuristic) بستگی داره. اگه هیوریستیک شما «قابل قبول» (Admissible) نباشه (یعنی بدبین باشه و فاصله رو بیشتر از حد واقعی حدس بزنه)، A* ممکنه گول بخوره و اصلاً جواب بهینه (Optimal) رو پیدا نکنه!
دایکسترا: «کور»ـه و جستجوش (UCS) در تمام جهات پخشه. هدفش پیدا کردن کوتاهترین راه از مبدأ به همهی نقاطه.
اِی-اِستار: «هوشمند»ـه و با کمک هیوریستیک به سمت هدف میگرده. هدفش پیدا کردن کوتاهترین راه از مبدأ به یک مقصد مشخصه.
حالا یه نکته:
الگوریتم دایکسترا در واقع یه حالت خاص از الگوریتم A* هست!
چطوری؟ اگه توی A*، اون «حدس هوشمندانه» (h(n)) رو برای همهی گرهها صفر در نظر بگیری (یعنی عملاً بگی: «آقا من هیچ حدسی ندارم!»)، الگوریتم A* دقیقاً تبدیل میشه به دایکسترا!
پس کی از کدوم استفاده کنیم؟
برو سراغ Dijkstra:
* وقتی میخوای کوتاهترین مسیر از یک نقطه به تمام نقاط دیگه رو بدونی (مثلاً تو پروتکلهای روتینگ شبکه مثل OSPF که باید بدونن بهترین راه تا همهی روترهای دیگه چیه).
برو سراغ A*:
* وقتی یک مبدأ و یک مقصد مشخص داری (۹۹٪ کاربردهای ما مثل GPS، مسیریابی تو بازیها، رباتیک و...).
* وقتی سرعت برات مهمه و میتونی یه هیوریستیک خوب (مثل فاصله خط صاف) حساب کنی.
دفعهی بعدی که «نشان» رو باز کردید یا تو یه بازی مثل The Last of Us دیدید که دشمن چقدر هوشمندانه دنبالتون میاد، یادتون باشه که یه چیزی شبیه A* پشت صحنه داره کار میکنه.
—-
🆔 @MdDaily
Please open Telegram to view this post
VIEW IN TELEGRAM