찾다

 >  Q&A  >  본문

내 Laravel + GatsbyJS 앱은 로그인 관리를 위해 auth:sanctum을 사용하고 다른 사용자에게는 서버 500 오류가 발생하지만 내 로그인은 제대로 작동합니다.

<p>그래서 저는 개발을 돕고 있는 앱(백엔드에 laravel을 사용하고 프론트엔드에 GatsbyJS를 사용)을 가지고 있습니다. 한 달 전에는 모든 사용자가 문제 없이 로그인할 수 있었습니다. 하지만 이제 모든 사용자가 프로덕션 환경에 로그인할 수 없다는 것을 알았습니다(나 제외). </p> <p>login.jsx 파일</p> <pre class="brush:php;toolbar:false;">const formChanged = async (e) => setError(false); e.preventDefault(); setSubmitting(true); loginData = getValues(); 응답 = 로그인 대기(loginData.email, loginData.password); setSubmitting(false); if (응답.오류) { setError(true); setValue('비밀번호', ''); } 또 다른 { 탐색('/app/idm/'); } };</pre> <p>let response = wait login()은 api.js 파일에 있는 login이라는 메소드를 호출합니다</p> <p>api.js 파일</p> <pre class="brush:php;toolbar:false;">// 애플리케이션에 로그인 const 로그인 내보내기 = 비동기(이메일, 비밀번호) => // 요청 보내기 응답하자 = wait makeRequest('post', '/login', { 이메일, 비밀번호 }); // 오류가 없으면 토큰과 사용자를 설정합니다. if (!response.error && isBrowser()) { localStorage.setItem('idm_token', response.data.access_token); let my_user = JSON.stringify(기다립니다(response.data.access_token)); localStorage.setItem('idm_user', my_user); } 응답 반환; };</pre> <p>이메일과 비밀번호를 전달하면 이 데이터가 확인되며 이 시점에서 모든 사용자는 문제 없이 토큰을 생성할 수 있습니다. </p> <p> (참고용으로 성소 토큰을 생성하는 코드) api.php 파일</p> <pre class="brush:php;toolbar:false;">Route::post('/login', function(Request $request) { $login = $request->only('이메일', '비밀번호'); if (Auth::attempt($login)) { $user = 사용자::where('email', $request['email'])->firstOrFail(); $token = $user->createToken('auth_token')->plainTextToken; 응답()->json([ '액세스 토큰' => 'token_type' => '무기명' ]); } return response()->json(["message" => "인증 실패"], 401); })->name('api.login');</pre> <p>문제는 현재 auth:sanctum으로 보호되는 경로에 액세스하는 것 같습니다. 다시 말하지만 모든 사용자는 토큰을 생성할 수 있지만 내 로그인 정보만 경로에 액세스할 수 있습니다. 다른 모든 사용자에게는 서버 500 오류가 발생합니다.</p> <p>my_user 세부정보를 가져오려고 할 때 api.js 파일에서 이런 일이 발생합니다. </p> <pre class="brush:php;toolbar:false;">let my_user = JSON.stringify(await me(response.data.access_token));</pre> <p>제가 겪고 있는 또 다른 문제는 프로덕션 환경의 laravel 애플리케이션이 몇 달 전에 오류 출력을 중단했고 프로덕션 환경의 오류 로깅 문제를 해결하는 방법을 알 수 없다는 것입니다(개발에서는 오류 로깅이 괜찮습니다). </p> <p>자세한 내용이 부족해서 죄송합니다. 저는 이 모든 것이 매우 낯설고, 팁이나 시도해 볼 만한 것이 있으면 정말 감사하겠습니다. 답변을 얻지 못하더라도 저는 그 이상입니다. 이 문제를 배우고 해결하기 위해 노력할 의향이 있습니다. </p>
P粉215292716P粉215292716457일 전580

모든 응답(1)나는 대답할 것이다

  • P粉734486718

    P粉7344867182023-09-05 00:10:08

    문제를 추가로 해결하기 위해 오류 로그를 받지 못하는 이유를 살펴보기로 했습니다.

    저장 폴더와 그 내용을 777로 chmod하기로 결정했습니다

    으아악

    콘텐츠를 777로 재귀적으로 설정하려면 -R을 추가하세요

    실제로는 로그인 문제가 해결되었지만 권한 수준을 775로 복원한 후 일부 사용자는 다시 로그인할 수 있었지만 전부는 아니었습니다.

    그런 다음 내 로그 파일/폴더에 권한 문제가 있어서 오류 로그가 인쇄되지 않는 이유가 아닐까 생각했습니다.

    그래서 laravel.log 파일을 더 자세히 살펴보았습니다. 사용자(ubuntu:ubuntu)만이 읽을 수 있다는 것이 밝혀졌습니다. 그룹을 www-data

    로 변경하기로 했어요 으아악

    이것은 나에게 매우 도움이 됩니다. laravel에 오류를 다시 기록할 수 있습니다!

    이제 대략 다음과 같은 오류가 표시됩니다.

    으아악

    그래서 저장소의 모든 권한을 확인해보니 내 데이터 폴더는 사용자만 접근할 수 있다는 것을 알게 되었습니다

    www-data를 데이터 폴더에 그룹으로 추가했습니다:

    으아악

    이제 문제가 해결되었습니다! (참고: 내 chmod 권한이 775로 복원되었습니다.)

    회신하다
    0
  • 취소회신하다