راکت

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

7 پاسخ

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

ثبت پرسش جدید

پاسخ‌ها

7
علیرضا تحریری
علیرضا تحریری
@alirezatahriri

تخصص: لاراول، لایوایر و Tailwind css

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

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

تخصص: front-end developer

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

شاید پاسخ شما همین‌جا باشد

علیرضا تحریری
علیرضا تحریری
@alirezatahriri

تخصص: لاراول، لایوایر و Tailwind css

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

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

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

Parastoo Ebrahimi
Parastoo Ebrahimi
@parastooebrahimi

تخصص: front-end developer

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

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

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

محسن بستان
محسن بستان
@mohsenbostan

تخصص: Senior Backend Developer

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

Bahman Aliveisi
Bahman Aliveisi
@roj

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

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

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

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