راکت

refreshtoken

11 پاسخ

سلام دوستان
خسته نباشید
من با استفاده از 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))
          },
ثبت پرسش جدید

پاسخ‌ها

11
میلاد خسروی
میلاد خسروی
@milwad

تخصص: برنامه نویس بامزه

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

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

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

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

مشکات
مشکات
@meshkat315

تخصص: کاراموز

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

مشکات
مشکات
@meshkat315

تخصص: کاراموز

من چطوری میتونم توی برنامه ی لاراولیم که از 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);
        }
    }
مشکات
مشکات
@meshkat315

تخصص: کاراموز

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

میلاد خسروی
میلاد خسروی
@milwad

تخصص: برنامه نویس بامزه

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

مشکات
مشکات
@meshkat315

تخصص: کاراموز

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

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

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

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

مشکات
مشکات
@meshkat315

تخصص: کاراموز

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

حسین شیری نژاد
حسین شیری نژاد
@hosseinshirinegad98

تخصص: programmer

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

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

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