Apl Laravel + GatsbyJS saya menggunakan auth: sanctum untuk pengurusan log masuk, pengguna lain mendapat ralat 500 pelayan, tetapi log masuk saya berfungsi dengan baik
P粉215292716
P粉215292716 2023-09-04 09:08:41
0
1
577
<p>Jadi saya mempunyai apl (menggunakan laravel untuk bahagian belakang dan GatsbyJS untuk bahagian hadapan) yang saya bantu bangunkan. Sebulan yang lalu, semua pengguna dapat log masuk tanpa masalah. Tetapi saya mendapati bahawa sekarang, semua pengguna tidak boleh log masuk dalam persekitaran pengeluaran (kecuali saya). </p> <p>fail log masuk.jsx</p> <pre class="brush:php;toolbar:false;">const formChanged = async (e) => setError(false); e.preventDefault(); setSubmitting(true); biarkan loginData = getValues(); biarkan respons = tunggu log masuk(loginData.email, loginData.password); setSubmitting(false); jika (response.error) { setError(benar); setValue('kata laluan', ''); } lain { navigasi('/app/idm/'); } };</pre> <p>biarkan respons = tunggu log masuk() memanggil kaedah bernama log masuk, yang terletak dalam fail api.js</p> <p>fail api.js</p> <pre class="brush:php;toolbar:false;">// Log masuk ke aplikasi log masuk const eksport = async (e-mel, kata laluan) => // hantar permintaan biarkan respons = tunggu makeRequest('post', '/login', { email, password }); // Jika tiada ralat, tetapkan token dan pengguna jika (!response.error && isBrowser()) { localStorage.setItem('idm_token', response.data.access_token); let my_user = JSON.stringify(tunggu saya(response.data.access_token)); localStorage.setItem('idm_user', my_user); } balasan balas; };</pre> <p>Apabila kami menghantar e-mel dan kata laluan, data ini disahkan dan pada ketika ini, semua pengguna dapat menjana token tanpa masalah. </p> <p> (Untuk rujukan sahaja, kod untuk menjana token sanctum) fail api.php</p> <pre class="brush:php;toolbar:false;">Route::post('/login', function(Minta $request) { $login = $request->only('email', 'password'); if (Auth::attempt($login)) { $user = User::where('email', $request['email'])->firstOrFail(); $token = $user->createToken('auth_token')->plainTextToken; return response()->json([ 'token_akses' => 'token_type' => 'Pembawa' ]); } return response()->json(["message" => "Pengesahan gagal"], 401); })->nama('api.login');</pre> <p>Masalah nampaknya ialah mengakses laluan yang kini dilindungi oleh auth:sanctum. Sekali lagi, semua pengguna boleh menjana token, tetapi hanya butiran log masuk saya membenarkan saya mengakses laluan. Semua pengguna lain akan menerima ralat pelayan 500.</p> <p>Ini berlaku dalam fail api.js apabila kami cuba mendapatkan butiran pengguna_saya: </p> <pre class="brush:php;toolbar:false;">let my_user = JSON.stringify(tunggu saya(response.data.access_token));</pre> <p>Satu lagi masalah yang saya hadapi ialah aplikasi laravel saya dalam pengeluaran berhenti mengeluarkan ralat beberapa bulan lalu dan saya tidak dapat memikirkan cara untuk membetulkan isu pengelogan ralat dalam pengeluaran (dalam pembangunan, Ralat pengelogan adalah OK). </p> <p>Maaf atas kekurangan butiran, saya sangat baru dalam semua ini dan jika terdapat sebarang petua atau perkara untuk dicuba, saya amat menghargainya, walaupun saya tidak mendapat jawapan saya lebih daripada bersedia untuk berusaha untuk mempelajari dan menyelesaikan soalan ini. </p>
P粉215292716
P粉215292716

membalas semua(1)
P粉734486718

Untuk menyelesaikan masalah selanjutnya, saya memutuskan untuk melihat sebab saya tidak menerima log ralat.

Saya memutuskan untuk chmod 777 folder storan dan kandungannya

chmod -R 777 storage/

Tambah -R untuk menetapkan kandungan secara rekursif kepada 777

Ini sebenarnya menyelesaikan isu log masuk saya, tetapi saya perhatikan bahawa selepas memulihkan tahap kebenaran kepada 775, sesetengah pengguna dapat log masuk semula, tetapi bukan semua.

Kemudian saya fikir, mungkin saya mempunyai masalah kebenaran dengan fail/folder log saya dan mungkin itulah sebabnya saya tidak mendapatkan log ralat dicetak?

Jadi saya melihat lebih jauh ke dalam fail laravel.log saya. Ternyata ia hanya boleh dibaca oleh pengguna (ubuntu:ubuntu). Saya memutuskan untuk menukar kumpulannya kepada www-data

chown ubuntu:www-data laravel.log

Ini sangat membantu saya, saya dapat log ralat dalam laravel sekali lagi!

Sekarang saya melihat kesilapan saya, kira-kira seperti berikut:

production.ERROR: Unable to create lockable file: /var/www/main/backend/storage/framework/cache/data/d5/........etc...etcc

Jadi saya menyemak setiap kebenaran di bawah storan dan mendapati folder data saya hanya boleh diakses oleh pengguna

Saya menambah www-data sebagai kumpulan pada folder data:

chown ubuntu:www-data data

Kini, masalah saya telah selesai! (Nota: Keizinan chmod saya telah dipulihkan kepada 775)

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan