それで、開発を手伝っているアプリ (バックエンドに laravel、フロントエンドに GatsbyJS を使用) があります。 1 か月前、すべてのユーザーが問題なくログインできました。しかし、現在、すべてのユーザーが本番環境にログインできないことがわかりました (私を除く)。
login.jsx ファイル
const formChanged = async (e) => { setError(false); e.preventDefault(); setSubmitting(true); ログインデータ = getValues(); にしましょう。 let 応答 = await ログイン(loginData.email、loginData.password); setSubmitting(false); if (response.error) { setError(true); setValue('パスワード', ''); } それ以外 { ナビゲート('/app/idm/'); } };
let response = await login() は、api.js ファイル
にある login という名前のメソッドを呼び出します。api.js ファイル
// アプリケーションにログインします エクスポート const ログイン = 非同期 (電子メール、パスワード) => { // リクエストを送信 let response = await makeRequest('post', '/login', { メールアドレス, パスワード }); // エラーがなければ、トークンとユーザーを設定します if (!response.error && isBrowser()) { localStorage.setItem('idm_token', response.data.access_token); let my_user = JSON.stringify(await me(response.data.access_token)); localStorage.setItem('idm_user', my_user); } 応答を返します。 };
電子メールとパスワードを渡すと、このデータが検証され、この時点ですべてのユーザーが問題なくトークンを生成できます。
(参考のみ、Sanctum トークンを生成するコード) api.php ファイル
Route::post('/login', function(Request $request) { $login = $request->only('メールアドレス', 'パスワード'); if (認証::試行($login)) { $user = User::where('email', $request['email'])->firstOrFail(); $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'access_token' => $token, 'token_type' => 'ベアラー' ]); } return response()->json(["メッセージ" => "認証に失敗しました"], 401); })->name('api.login');
問題は、現在 auth:sanctum によって保護されているルートにアクセスしているようです。繰り返しますが、すべてのユーザーがトークンを生成できますが、ルートにアクセスできるのは私のログイン詳細のみです。 他のすべてのユーザーはサーバー 500 エラーを受け取ります。
これは、my_user の詳細を取得しようとすると、api.js ファイルで発生します。
let my_user = JSON.stringify(await me(response.data.access_token));
私が抱えているもう1つの問題は、本番環境のlaravelアプリケーションが数か月前にエラーの出力を停止し、本番環境でのエラーログの問題を修正する方法がわからないことです(開発中はエラーログは問題ありません)。
詳細が足りず申し訳ありませんが、私はこのようなことにはまったく慣れていないので、何かヒントや試してみるべきことがあれば、本当に感謝します。たとえ答えが得られなかったとしても、私は以上のことを考えています。この質問を学び、解決することに喜んで取り組みます。
問題をさらにトラブルシューティングするために、エラー ログを受信しない理由を調べることにしました。
ストレージフォルダーとその内容をchmod 777
に設定することにしました。 リーリー-R を追加してコンテンツを再帰的に 777 に設定します
これで実際にログインの問題は解決しましたが、アクセス許可レベルを 775 に戻した後、一部のユーザーは再びログインできましたが、すべてのユーザーは再ログインできなかったことに気付きました。
そこで、ログ ファイル/フォルダーにアクセス許可の問題があるのではないか、それがエラー ログが出力されない理由ではないかと考えました。
そこで、laravel.log ファイルをさらに調べてみました。ユーザー (ubuntu:ubuntu) のみが読み取ることができることがわかりました。そのグループを www-data
に変更することにしました。 リーリーこれは私にとって非常に役に立ちます。laravel でエラー ログを再び記録できるようになりました。
おおよそ次のようなエラーが表示されます。
リーリーそこで、ストレージ内のすべての権限を確認したところ、データフォルダーにはユーザーのみがアクセスできることがわかりました
www-data をデータ フォルダーのグループとして追加しました:
リーリーこれで、私の問題は解決しました! (注: chmod 権限は 775 に復元されました)