مشکات
3 سال پیش توسط مشکات مطرح شد
11 پاسخ

refreshtoken

سلام دوستان
خسته نباشید
من با استفاده از axios از یک apiاستفاده کردم برای لاگین کردن در یک برنامه ی vuejs3
چطوری میتونم در ادامه ی این کد بگم که اگر توکن expireشد از refresh_token استفاده کنه و یک توکن جدید براش ایجاد کنه؟
خیلی ممنون میشم اگر راهنماییم کنید

     SignIn() {
            const result = axios
              .post("http://localhost:8000/api/login", this.data)
              .then((response) => {
                // console.log(result)
                localStorage.setItem("token", response.data.token);
                localStorage.setItem("refresh_token", response.data.refresh_token);
                eventBus.emit("showlog" , this.log);
                this.$router.push({ name: "Post" });
                console.log("logged in");
              })

              .catch(err => console.log(err.message))
          },

ثبت پرسش جدید
میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
0

سلام خسته نباشید
برای token تاریخ انقضا داری؟


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش مطرح شد
0

از پکیج پسپورت لاراول استفاده کنید هرگاه توکن انقضاع بشه کد 401 برمیگردونه و شما با استفاده از این کد متوجه میشوید که توکن منقضی شده و در ادامش یه درخواست به همراه رفرش توکن ارسال میکنید و توکن جدید رو دریافت میکیند.


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

سلام@milwad
@hosseinshirinegad98
ممنونم ازتون
در برنامه ی لاراولی که دارم از apiاش توی ویو استفاده میکنم از passportاستفاده کردم
هرچقدر سرچ میکنم متوجه نمیشم چطوری توی ویو۳ ازش استفاده کنم
میشه بیشتر راهنماییم کنید لطفا🙏🌹


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

من چطوری میتونم توی برنامه ی لاراولیم که از passport هم توش استفاده کردم از refreshtokenاستفاده کنم؟

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

 public function login(){
        if(Auth::attempt(['email' => request('email'), 'password' => request('password')])){
            $user = Auth::user();

            $success['token'] =  $user->createToken('Personal Access Token')-> accessToken;
//            dd($success['token']);
            return response()->json(['success' => $success], $this-> successStatus);
        }
        else{
            return response()->json(['error'=>'Unauthorised'], 401);
        }
    }

میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

@milwad
سلام ممنونم شما هم خسته نباشید
هر سه لینک رو دیدم ولی هیچ کدومش در مورد refreshtokenچیزی نگفته بود😥


میلاد خسروی
تخصص : برنامه نویس بامزه
@milwad 3 سال پیش مطرح شد
0

اهان مشکلت refresh token خب الان مشکل چیه و کدت چه مشکلی داره؟


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش آپدیت شد
0

میخوام بدونم چطور میتونم توی اون برنامه ی لاراولیمrefreshtokenرو ست کنم؟


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش آپدیت شد
0

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

قسمتهای 105 - 106 - 107 و 108 رو نگاه کنید


مشکات
تخصص : کاراموز
@meshkat315 3 سال پیش مطرح شد
0

@hosseinshirinegad98
سلام
خسته نباشید
خیلی مچکرم ازتون با راهنماییتون تونستم رفرش توکن رو بگیرم
حالا در سمت برنامه ی ویو چطور میتونم چک کنم که توکن expireشده یا نه؟
ممنون میشم برای این سوال هم راهنماییم کنید


حسین شیری نژاد
تخصص : programmer
@hosseinshirinegad98 3 سال پیش مطرح شد
0

سلام من بیشتر برنامه نویس سمت سرورم و لی شما به چندروش میتونید این کارو انجام بدید یا بیاید زمان معتبر بودن توکنو در لوکال استوریج ذخیره کنید و قبل هر ارسال درخواست ،با jsبیاید این زمانو برسی کنید که معتبر هست یا نه.ولی روش سادش این هست که در بالا هم گفتم شما هیچ زمانی رو چک نکن و به درخواست زدنها به روتهایی که نیاز به احراز هویت دارند ادامه بدید هرگاه توکن منقضی بشه کد 401 برمیگردونه و شما باید در ادامه یه درخواست با رفرش توکن برای گرفتن اکسس توکن بزنید و بعد از دریافن اکسس توکن مجدد کاربرو به روت قبلی که میخواست بره و توکنش منقضی شده بود ریدایرکت کنی.
باید در درخواستهای axios کدی که سرور میده رو چک کنید اگر 401 داد باید ببینید درلوکال استوریج رفرش توکن دارید اگه دارید که اقدام به گرفتن اکسس توکن جدید میکنید و در غیر اینصورت فرم لاگین نشون داده میشه


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

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