سلام. یک فرم هست که کاربر بعد از لاگین واردش میشه و اطلاعاتش اونجا نمایش داده میشه. بعد از 30 دقیقه دیگه توکن نامعتبر میشه و فرم خالی فقط نمایش داده میشه. میخوام وقتی توکن نامعتبر شد به صفحه لاگین ریدایرکت بشه. چجوری باید چک بشه که توکن نامعتبر شده؟ (من توکن رو در لوکال استوریج ذخیره میکنم )
@ali.bayat
@hesammousavi
@hossein.r.1442
سلام شما باید داخل کنترل مربوط به ویوتون دستور زیر را وارد کنید تا هنگامی که فقط لاگین کرد بتونه به اون صفحه دسترسی پیدا کنه.
public function __construct()
{
$this->middleware(['auth', 'verified']);
}
همینطور هست وقتی لاگین میکنه به اون صفحه دسترسی داره. ولی بعد 30 دقیقه توکن نامعتبر میشه.. و خب دیگه اطلاعاتی رو نشون نمیده و فرم خالی رو نمایش میده. سوالم اینه چجوری چک کنم توکن نامعتبر شده و اگه شده ریدایرکت بشه به لاگین.
@alirezatahriri
شرطی رو بزارید
if (Auth::check())
{
// کاربر احراز هویت شده و لاگین میباشد ...
}
و بعدش میتونید بگید اگر لاگین نکرده بود به صفحه لاگین ریدایرکت بشه
من اصلا با این قسمت مشکلی ندارم.. اگر لاگین نکرده باشه به صفحه لاگین ریدایرکت میشه! مشکل من با اینه که 30 دقیقه یک بار توکن نامعتبر میشه و توی لوکال استوریج باقی میمونه. برای همین فرم خالی نمایش داده میشه. چجوری میتونم چک کنم که اگر توکن انقضاش تموم شده بود از لوکال استوریج پاک بشه!
@alirezatahriri
This /oauth/token route will return a JSON response containing access_token, refresh_token, and expires_in attributes. The expires_in attribute contains the number of seconds until the access token expires.
هر وقت کاربری درخواست میده میتونی زمان باقی مانده رو چک کنی و اگر برابر با 0 بودتوکن رو از لوکال استوریج پاک کنی
@parastooebrahimi
سلام.
میتونید به صورت real-time یک درخواست به یک route بدید که چک کنه که اعتبار توکن تموم شده یا نه. و بعد اگر تموم شده بود کاربر رو هدایت میکنید به لاگین.
احتمالا مشکل شما به اینصورت هست
همه فیلدها رو پر میکنه اما وقتی ارسال میکنه بدلیل منقضی شدن توکن به صفحه ورود هدایت میشه. بعد از ورود مجدد باید اطلاعاتی رو که وارد کرده بود دوباره وارد کنه.
این کد بعد از تمام شدن مدت اعتبار توکن به روت مورد نظر میره:
/******************** web.php ****************/
Route::get('cle', [
'as' => 'cle',
'uses' => 'appController@check_login_expired'
]);
/****************** appController ******************/
public function check_login_expired(){
$login_expired = 1;
if(Auth::check())
$login_expired = 0;
return $login_expired;
}
/****************** master.blade.php ******************/
setInterval(function () {
$.ajax({
cache: false,
url: '{{ route('cle') }}',
type: "GET",
headers: {
'X-CSRF-TOKEN': $('meta[name=_token]').attr('content')
},
contentType: false,
processData: false,
success: function (data, textStatus, xhr) {
if(data)
window.location.href = '{{ route('dashboard') }}';
}
});
}, {{ Config::get('session.lifetime') * 60 * 1000 }});
});
مقدار session lifetime (براساس دقیقه) رو میتونید در config/session.php یا در فایل env بصورت SESSION_LIFETIME مقداردهی کنید
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟