soltan
2 سال پیش توسط soltan مطرح شد
1 پاسخ

auth در nuxt

سلام دوستان
یه مشکلی پیش اومده
من میخوام سیستم auth رو در لاراول با jwt به nuxt بفرستم همه چی درسته ولی $auth.loggedIn تغییر نمیکنه و کاربر رو نمیشناسه:

async submit() {
      console.log(this.$auth.loggedIn)
      try {
        let response = await this.$auth.loginWith('local', {
          data: {
            email: 'denesik.kaci@example.net',
            password: 'password'
          }
        })
        console.log(response.data.data.token)
        console.log(this.$auth.loggedIn)
      } catch (err) {
        console.log(err)
      }
    }

خروجی کنسول:

‍‍‍false
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC9zbmlwcGV0LnRlc3RcL2FwaVwvYXV0aFwvc2lnbi1pbiIsImlhdCI6MTYzODk0MTk1MywiZXhwIjoyMjM4OTQxODkzLCJuYmYiOjE2Mzg5NDE5NTMsImp0aSI6ImF5azNtQTExTWhkcTdoR3QiLCJzdWIiOjEsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.tB4eXEiLB7KTDceIaaeX55FwqWytSRntapH5SLRroHk
false

همونطور که مشاهده میکنید توکن به درستی برمیگرده، فایل کانفیگ nuxt هم به صورت زیر:

auth: {
    strategies: {
      local: {
        endpoints: {
          login: {
            url: 'auth/sign-in',
            method: 'post',
            propertyName: 'data.token'
          },
          user: {
            url: 'auth/me',
            method: 'get',
            propertyName: 'data'
          }
        }
      }
    }
}

ثبت پرسش جدید
سیروس
تخصص : برنامه نویس
@Cyrus 2 سال پیش آپدیت شد
1

سلام دوست عزیز
احتمالا مشکل مربوط به propertyName هایی هست که توی کانفیگ auth قرار دادید
برای اطمینان از درست بودن کانفیگ login، کوکی ها و لوکال استوریج مرورگر رو چک کنید تا متوجه بشید آیا برنامه تون موفق شده توکن رو از توی پاسخ ارسال شده از طرف api استخراج و توی مرورگر ذخیره کنه یا خیر. (توکن رو با کلید auth.token.local توی کوکی و لوکال استوریج ذخیره میکنه)
اگر توکن با موفقیت ذخیره شده بود که یعنی کانفیگ مربوط به login رو توی nuxt.config درست انجام دادید.
ولی اگر این اتفاق نیوفتاده بود یعنی propertyName باید دستکاری شه ، نشونه درست بودن کانفیگ مربوط به login سِت شدن توکن توی کوکی هست.
در مرحله بعد بجای کانفیگی که برای user قرار دادید false رو قرار بدید تا متوجه بشید آیا مشکل مربوط به دریافت اطلاعات کاربر هست یا خیر (که احتمالا همین باشه)

auth: {
    strategies: {
      local: {
        endpoints: {
          login: {
            url: 'auth/sign-in',
            method: 'post',
            propertyName: 'data.token'
          },
          user: false
        }
      }
    }
}

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

برای بنده که مشکل مشابه شما رو داشتم، با اصلاح کانفیگ user ایراد برطرف شد.

الان که این پاسخ ثبت شده زمان زیادی از مطرح شدن سوال گذشته با این حال شاید در آینده بتونه برای کاربر دیگه ای مفید واقع بشه😉


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

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