Parastoo Ebrahimi
5 سال پیش توسط Parastoo Ebrahimi مطرح شد
7 پاسخ

نا معتبر شدن توکن

سلام. یک فرم هست که کاربر بعد از لاگین واردش میشه و اطلاعاتش اونجا نمایش داده میشه. بعد از 30 دقیقه دیگه توکن نامعتبر میشه و فرم خالی فقط نمایش داده میشه. میخوام وقتی توکن نامعتبر شد به صفحه لاگین ریدایرکت بشه. چجوری باید چک بشه که توکن نامعتبر شده؟ (من توکن رو در لوکال استوریج ذخیره میکنم )
@ali.bayat
@hesammousavi
@hossein.r.1442


ثبت پرسش جدید
علیرضا تحریری
تخصص : لاراول، لایوایر و Tailwind css
@alirezatahriri 5 سال پیش آپدیت شد
0

سلام شما باید داخل کنترل مربوط به ویوتون دستور زیر را وارد کنید تا هنگامی که فقط لاگین کرد بتونه به اون صفحه دسترسی پیدا کنه.

    public function __construct()
    {
        $this->middleware(['auth', 'verified']);
    }

Parastoo Ebrahimi
تخصص : front-end developer
@parastooebrahimi 5 سال پیش مطرح شد
0

همینطور هست وقتی لاگین میکنه به اون صفحه دسترسی داره. ولی بعد 30 دقیقه توکن نامعتبر میشه.. و خب دیگه اطلاعاتی رو نشون نمیده و فرم خالی رو نمایش میده. سوالم اینه چجوری چک کنم توکن نامعتبر شده و اگه شده ریدایرکت بشه به لاگین.
@alirezatahriri


علیرضا تحریری
تخصص : لاراول، لایوایر و Tailwind css
@alirezatahriri 5 سال پیش مطرح شد
0

شرطی رو بزارید

    if (Auth::check())
    {
        // کاربر احراز هویت شده و لاگین میباشد ...
    }

و بعدش میتونید بگید اگر لاگین نکرده بود به صفحه لاگین ریدایرکت بشه


Parastoo Ebrahimi
تخصص : front-end developer
@parastooebrahimi 5 سال پیش مطرح شد
0

من اصلا با این قسمت مشکلی ندارم.. اگر لاگین نکرده باشه به صفحه لاگین ریدایرکت میشه! مشکل من با اینه که 30 دقیقه یک بار توکن نامعتبر میشه و توی لوکال استوریج باقی میمونه. برای همین فرم خالی نمایش داده میشه. چجوری میتونم چک کنم که اگر توکن انقضاش تموم شده بود از لوکال استوریج پاک بشه!
@alirezatahriri


علی بیات
تخصص : توسعه دهنده ارشد وب
@ali.bayat 5 سال پیش مطرح شد
0

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 بودتوکن رو از لوکال استوریج پاک کنی


محسن بستان
تخصص : Senior Backend Developer
@mohsenbostan 5 سال پیش مطرح شد
0

@parastooebrahimi
سلام.
میتونید به صورت real-time یک درخواست به یک route بدید که چک کنه که اعتبار توکن تموم شده یا نه. و بعد اگر تموم شده بود کاربر رو هدایت میکنید به لاگین.


Bahman Aliveisi
@roj 5 سال پیش مطرح شد
0

احتمالا مشکل شما به اینصورت هست

  1. کاربر صفحه فرم رو لود میکنه
  2. قبل از پر کردن فرم یک کاری براش پیش میاد میره نیم ساعت بعد میاد سراغ فرم
  3. همه فیلدها رو پر میکنه اما وقتی ارسال میکنه بدلیل منقضی شدن توکن به صفحه ورود هدایت میشه. بعد از ورود مجدد باید اطلاعاتی رو که وارد کرده بود دوباره وارد کنه.
    این کد بعد از تمام شدن مدت اعتبار توکن به روت مورد نظر میره:

    /******************** 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 مقداردهی کنید


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

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