Laravelパスポートを使用するNuxtjsは、保護されたページでページを更新した後、ログインページにリダイレクトします
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パスポート認証の実装
誰かが解決策を知っていますか?
回答
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');
});
}
});
}
詳細については、この投稿をお読みください
私は最近この問題に直面しました。この回答は運用担当者には役に立たないかもしれませんが、将来的には他の人にも役立つと思います。
これは、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);
私もここに私のブログにそれについて書きました