Laravelパスポートを使用するNuxtjsは、保護されたページでページを更新した後、ログインページにリダイレクトします

Aug 19 2020

NUXT認証にlaravelパスポートを使用しています。私はこのドキュメントをフォローしています:

https://auth.nuxtjs.org/providers/laravel-passport.html#usage

nuxt-appに正常にログインできます。ログイン後、ダッシュボードにリダイレクトされますmiddleware:'auth'。問題は。ダッシュボードを更新すると、ログインページにリダイレクトされます。jsコンソールで$auth.isAuthenticatedはtrueを返しますが、SSRではfalseを返します。問題はオンmiddleware:authになっていると思いますが、よくわかりません。私はすでにグーグルで検索しましたが、解決策はありません。私はすでにこれを試しました:

https://github.com/nuxt-community/auth-module/issues/478

私のコードは以下のようになります:

Nuxtフロントエンドを使用したLaravel7パスポート認証の実装

誰かが解決策を知っていますか?

回答

1 StefanTanevski Aug 21 2020 at 11:08

http_onlyクッキーは、SSRでは使用できません。したがって、nuxtプラグインを作成する必要があります。そして、access_tokenが存在せずuser、Cookieに存在するかどうかを確認する必要があります(ユーザーがログインするときに、ユーザー情報またはユーザーIDを使用してCookieを作成する必要があります。個人的にはVuexをvuex-persistedstateと組み合わせて使用​​します)。また、ユーザーがCookieに存在し、存在access_tokenしない場合は、トークンを更新する必要があります。

plugins/refresh-token.js

import clientCookies from 'js-cookie';

/**
 * For refreshing the token on page reload.
 *
 * @param  {Object} context.store
 * @return {Void}
 */
export default function ({store}) {
  window.onNuxtReady(() => {
    let token = clientCookies.get('x-access-token');
    let user = store.getters['user/currentUser'];

    if (user && ! token) {
      store.dispatch('auth/refreshToken')
        .catch(errors => {
          store.dispatch('auth/signUserOut');
        });
    }
  });
}

詳細については、この投稿をお読みください

OlumideOmotoso Sep 15 2020 at 12:54

私は最近この問題に直面しました。この回答は運用担当者には役に立たないかもしれませんが、将来的には他の人にも役立つと思います。

これは、routes / api.phpにあるapiルートの下で、laravelアプリケーションapiにアクセスするnuxt jsドメインを追加し、以下のコードを使用して、以下で行ったことです-独自のユースケース用に特別にフォーマットするようにしてください

$landingRoutes = function () { //your routes }; Route::group(['domain' => config('app.DASHBOARD_DOMAIN1')], $landingRoutes);
Route::group(['domain' => config('app._DASHBOARD_DOMAIN2')], $landingRoutes);

私もここに私のブログにそれについて書きました