داشتم یه مدل میساختم که باید برای یه فیلدش چند مقدار مشخص تعریف میکردم.
طبق عادت قدیمی، رفتم یه لیست (value, label) بسازم… ولی وسط کار چشمم افتاد به models.TextChoices
گفتم خب، یه بار امتحانش کنم… و از همون لحظه فهمیدم این بهترین راهه برای تعریف choice field تو Django
مزیتهاش چیه؟
به جای "info" میگی Level.INFO → هم امنتره، هم IDE بهت autocomplete میده.
مقدار دیتابیس و برچسب نمایشی رو با هم داری.
میتونی با obj.get_level_display() اسم قابل نمایش رو بگیری.
کد ساختاریافته تره
وقتی میشه کد تمیزتر و قابل نگهداریتری داشت، چرا هنوز با استرینگ خام کار کنیم؟ 😉
از لینکدین شایان حسین زاده
طبق عادت قدیمی، رفتم یه لیست (value, label) بسازم… ولی وسط کار چشمم افتاد به models.TextChoices
گفتم خب، یه بار امتحانش کنم… و از همون لحظه فهمیدم این بهترین راهه برای تعریف choice field تو Django
مزیتهاش چیه؟
به جای "info" میگی Level.INFO → هم امنتره، هم IDE بهت autocomplete میده.
مقدار دیتابیس و برچسب نمایشی رو با هم داری.
میتونی با obj.get_level_display() اسم قابل نمایش رو بگیری.
کد ساختاریافته تره
وقتی میشه کد تمیزتر و قابل نگهداریتری داشت، چرا هنوز با استرینگ خام کار کنیم؟ 😉
از لینکدین شایان حسین زاده
👍11❤3👎1
چرا جنگو رو یاد گرفتی؟
Anonymous Poll
12%
باهاش کارمند بشم
19%
پروژه های فریلنسری باهاش انجام بدم
29%
هم فریلنسری هم کارمندی
16%
از سر بیکاری
30%
یه اشتباهی بود کردیم دیگه
18%
موارد دیگه
😁15👎1
امنیت پایدارتر با یک چرخش ساده! 😎
✅ اگه با JWT کار کرده باشی، میدونی که ما یک access token و یک refresh token داریم
✅ اکسس توکن ما که خب عمرش کوتاهه مثلا بعد 10 دقیقه باطل میشه و از طریق رفرش توکن که عمرش بلندتره(مثلا 7 روز) باید یک اکسس توکن و رفرش توکن جدید از سرور درخواست کنیم
🤨 حالا یک مسعله ای هست این وسط ؟!
رفرش توکن شما نباید اینطوری باشه که توی اون 7 روز هربار که ازش استفاده کردی فرت و فرت بهت اکسس توکن بده.
😈 اینطوری اگه هکر عزیز بنا به هر علتی به اون رفرش توکن دسترسی پیدا کنه توی اون 7 روز هزاربار میتونه token بگیره و عشق و حال کنه
☝🏻اینجا دوتا مفهوم داریم به اسم rotate refresh token
و revoke refresh token که خیلی شبیه هم هستن(با فرق کوچولو)
✅ Rotate Token
یعنی هر بار که کاربر از Refresh Token استفاده کرد، یه Access Token جدید و یه Refresh Token جدید صادر میکنیم.
توی این حالت، Refresh Token قبلی دیگه نباید قابل استفاده باشه
اینجوریه که میگه: تو بیا رفرش توکن رو توی یک جایی مثلا ردیس یا هرچی، ذخیره کن و وقتی کاربر از اون رفرش توکن استفاده کرد قبلی رو حذف کن و جدیده رو بزار جاش تا یکبار بیشتر نتونه استفاده کنه
✅ Revoke Token
یعنی بیاعتبار کردن یک توکن قبل از اینکه تاریخ انقضاش برسه(با expire طبیعی توکن اشتباه نگیری). مثلا وقتی کاربر logout میکنه یا Refresh Token جدید گرفته، Refresh Token قبلی رو revoke میکنیم.
✅ در واقع میشه یه جورایی گفت :
اRotate یعنی "توکن جدید بده و قبلی رو کنار بذار"
اRevoke یعنی "توکن فعلی رو از کار بنداز"
این لینک زیر هم خیلی مفصل تر توضیح داده
https://auth0.com/docs/secure/tokens/refresh-tokens/refresh-token-rotation
از تلگرام @LearnByLearn
✅ اگه با JWT کار کرده باشی، میدونی که ما یک access token و یک refresh token داریم
✅ اکسس توکن ما که خب عمرش کوتاهه مثلا بعد 10 دقیقه باطل میشه و از طریق رفرش توکن که عمرش بلندتره(مثلا 7 روز) باید یک اکسس توکن و رفرش توکن جدید از سرور درخواست کنیم
🤨 حالا یک مسعله ای هست این وسط ؟!
رفرش توکن شما نباید اینطوری باشه که توی اون 7 روز هربار که ازش استفاده کردی فرت و فرت بهت اکسس توکن بده.
😈 اینطوری اگه هکر عزیز بنا به هر علتی به اون رفرش توکن دسترسی پیدا کنه توی اون 7 روز هزاربار میتونه token بگیره و عشق و حال کنه
☝🏻اینجا دوتا مفهوم داریم به اسم rotate refresh token
و revoke refresh token که خیلی شبیه هم هستن(با فرق کوچولو)
✅ Rotate Token
یعنی هر بار که کاربر از Refresh Token استفاده کرد، یه Access Token جدید و یه Refresh Token جدید صادر میکنیم.
توی این حالت، Refresh Token قبلی دیگه نباید قابل استفاده باشه
اینجوریه که میگه: تو بیا رفرش توکن رو توی یک جایی مثلا ردیس یا هرچی، ذخیره کن و وقتی کاربر از اون رفرش توکن استفاده کرد قبلی رو حذف کن و جدیده رو بزار جاش تا یکبار بیشتر نتونه استفاده کنه
✅ Revoke Token
یعنی بیاعتبار کردن یک توکن قبل از اینکه تاریخ انقضاش برسه(با expire طبیعی توکن اشتباه نگیری). مثلا وقتی کاربر logout میکنه یا Refresh Token جدید گرفته، Refresh Token قبلی رو revoke میکنیم.
✅ در واقع میشه یه جورایی گفت :
اRotate یعنی "توکن جدید بده و قبلی رو کنار بذار"
اRevoke یعنی "توکن فعلی رو از کار بنداز"
این لینک زیر هم خیلی مفصل تر توضیح داده
https://auth0.com/docs/secure/tokens/refresh-tokens/refresh-token-rotation
از تلگرام @LearnByLearn
✍13❤5👍4🔥1👏1