laravel 메일 인증 (EmailVerification)에서 인증 버튼을 누르면 403 오류 프로덕션 https에서만 발생
이 기사에 대하여
이번, 처음의 웹 어플리케이션 작성에 있어서, 배포 후, 마지막 마지막에 메일 인증으로 큰 빠졌으므로 비망록으로서 남겨 둡니다.
이 오류는 모두 왜 일어나지 않을까요? 라고 신기해질 정도로 정보가 적거나 자신에게 있어서는 유익하지 않은 것뿐이었습니다.
덧붙여서 최종적으로 해결에 이어진 것은 이쪽의 기사입니다.
↓
htps : // / 라카 sts. 코 m / ぢ s ku s / 찬 ls / ぁらゔぇl / 히친 g-403 - 퍼게 - ぇ - ぃ c 킨 ゔ ぇ 리 ぃー うん g ー ー ー ー파게 = 1
메일 인증이 프로덕션 (https)에서만 403 오류가 발생합니다.
제목대로입니다. 신규 유저 등록등을 실시했을 때에 “모든 기능을 이용하기 위해서는 메일 인증이 필요”라고 하는 web 서비스로 자주 있는 기능을 "EmailVerification"라고 하는 laravel 표준의 패키지를 이용해 구현했습니다.
개발 환경에서는 도착한 메일의 인증 버튼을 누르면, 문제없이 인증된다(localhost:8000)입니다만, 프로덕션 환경의 heroku에서는 인증되지 않고 403 에러. 덧붙여서 이름 .com에서 독자 도메인을 취득하고 있으며 heroku 내에서 GUI에서 SSL 인증서도 발행되었습니다.
빨리 결론
우선 결론으로서는 나의 경우는 아래와 같이 Middleware의 TrustProxies.php로 2점 변경하는 것으로 해결했습니다.
TrustProxies.php
protected $proxies = '*';
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
※ laravel의 버전에 따라서는 $proxies='**'; 로 할 필요가 있는 것 같습니다.
IP를 지정하는 방법도 있는 것 같습니다.
후, 미확인입니다만 $headers 쪽은 변경하지 않아도 괜찮을지도 모릅니다.
고찰
다시 heroku logs 등에서 403 오류 부분을 확인해 보면 https 대신 http로 변환되고 있습니다. 신용할 수 있는 프록시를 스스로 추기해 줄 필요가 있는 것 같네요.
로드 밸런서가 관련되어 있는 것 같습니다 (확실하지 않습니다). heroku 앱에 대한 요청을로드 밸런스하면서 내릴 수 있습니다.
원래 SSL 증명을 heroku상이 아니고, 도메인 취득시에 SSL 증명서를 취득하고 있으면 상기 코드의 변경은 불필요했다고도 생각할 수 있습니다.
덧붙여서 아래는 laravel의 공식 문서입니다.
TLS/SSL 증명을 하는 로드 밸런서의 뒤에서 어플리케이션이 실행되고 있는 경우, 어플리케이션이 때때로 HTTPS 링크를 생성하지 않는 것을 깨닫게 됩니다. 전형적인 이유는 트래픽이 로드 밸런서에 의해 80번 포트로 포워딩되기 때문에, 보안 링크를 생성해야 한다고 판단할 수 없기 때문입니다.
이 문제를 해결하려면 Laravel 응용 프로그램에 포함된 App\Http\Middleware\TrustProxies 미들웨어를 사용합니다. 이제 애플리케이션에 신뢰할 수 있는 로드 밸런서와 프록시를 쉽게 사용자 정의할 수 있습니다. 신뢰할 수 있는 프록시를 이 미들웨어의 $proxies 속성에 배열로 나열하십시오. 신뢰할 수 있는 프록시 설정 외에도 원본 요청에 대한 정보를 포함하여 프록시에서 보낸 헤더도 설정할 수 있습니다.
인용구 : ぇtps://레아도 bぇ. 이 m/ぁらゔぇl/5.5/쟈/레쿠에 sts. html
덤
①https가 관련되어 있다고 깨달은 것은 heroku의 환경 변수 설정에서 "developement"를 지정해 보았을 때에 문제없이 인증된 것이 계기였습니다.
명령
$ heroku config:set APP_ENV="development"
되돌릴 때
$ heroku config:set APP_ENV="production"
②이쪽은 라우팅의 설정입니다만, 잊지 마세요.
web.php
Auth::routes(['verify' => true]);
Reference
이 문제에 관하여(laravel 메일 인증 (EmailVerification)에서 인증 버튼을 누르면 403 오류 프로덕션 https에서만 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Takagi-Yuya/items/47e80036bf15bbd0e50c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
제목대로입니다. 신규 유저 등록등을 실시했을 때에 “모든 기능을 이용하기 위해서는 메일 인증이 필요”라고 하는 web 서비스로 자주 있는 기능을 "EmailVerification"라고 하는 laravel 표준의 패키지를 이용해 구현했습니다.
개발 환경에서는 도착한 메일의 인증 버튼을 누르면, 문제없이 인증된다(localhost:8000)입니다만, 프로덕션 환경의 heroku에서는 인증되지 않고 403 에러. 덧붙여서 이름 .com에서 독자 도메인을 취득하고 있으며 heroku 내에서 GUI에서 SSL 인증서도 발행되었습니다.
빨리 결론
우선 결론으로서는 나의 경우는 아래와 같이 Middleware의 TrustProxies.php로 2점 변경하는 것으로 해결했습니다.
TrustProxies.php
protected $proxies = '*';
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
※ laravel의 버전에 따라서는 $proxies='**'; 로 할 필요가 있는 것 같습니다.
IP를 지정하는 방법도 있는 것 같습니다.
후, 미확인입니다만 $headers 쪽은 변경하지 않아도 괜찮을지도 모릅니다.
고찰
다시 heroku logs 등에서 403 오류 부분을 확인해 보면 https 대신 http로 변환되고 있습니다. 신용할 수 있는 프록시를 스스로 추기해 줄 필요가 있는 것 같네요.
로드 밸런서가 관련되어 있는 것 같습니다 (확실하지 않습니다). heroku 앱에 대한 요청을로드 밸런스하면서 내릴 수 있습니다.
원래 SSL 증명을 heroku상이 아니고, 도메인 취득시에 SSL 증명서를 취득하고 있으면 상기 코드의 변경은 불필요했다고도 생각할 수 있습니다.
덧붙여서 아래는 laravel의 공식 문서입니다.
TLS/SSL 증명을 하는 로드 밸런서의 뒤에서 어플리케이션이 실행되고 있는 경우, 어플리케이션이 때때로 HTTPS 링크를 생성하지 않는 것을 깨닫게 됩니다. 전형적인 이유는 트래픽이 로드 밸런서에 의해 80번 포트로 포워딩되기 때문에, 보안 링크를 생성해야 한다고 판단할 수 없기 때문입니다.
이 문제를 해결하려면 Laravel 응용 프로그램에 포함된 App\Http\Middleware\TrustProxies 미들웨어를 사용합니다. 이제 애플리케이션에 신뢰할 수 있는 로드 밸런서와 프록시를 쉽게 사용자 정의할 수 있습니다. 신뢰할 수 있는 프록시를 이 미들웨어의 $proxies 속성에 배열로 나열하십시오. 신뢰할 수 있는 프록시 설정 외에도 원본 요청에 대한 정보를 포함하여 프록시에서 보낸 헤더도 설정할 수 있습니다.
인용구 : ぇtps://레아도 bぇ. 이 m/ぁらゔぇl/5.5/쟈/레쿠에 sts. html
덤
①https가 관련되어 있다고 깨달은 것은 heroku의 환경 변수 설정에서 "developement"를 지정해 보았을 때에 문제없이 인증된 것이 계기였습니다.
명령
$ heroku config:set APP_ENV="development"
되돌릴 때
$ heroku config:set APP_ENV="production"
②이쪽은 라우팅의 설정입니다만, 잊지 마세요.
web.php
Auth::routes(['verify' => true]);
Reference
이 문제에 관하여(laravel 메일 인증 (EmailVerification)에서 인증 버튼을 누르면 403 오류 프로덕션 https에서만 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Takagi-Yuya/items/47e80036bf15bbd0e50c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
protected $proxies = '*';
protected $headers = Request::HEADER_X_FORWARDED_AWS_ELB;
다시 heroku logs 등에서 403 오류 부분을 확인해 보면 https 대신 http로 변환되고 있습니다. 신용할 수 있는 프록시를 스스로 추기해 줄 필요가 있는 것 같네요.
로드 밸런서가 관련되어 있는 것 같습니다 (확실하지 않습니다). heroku 앱에 대한 요청을로드 밸런스하면서 내릴 수 있습니다.
원래 SSL 증명을 heroku상이 아니고, 도메인 취득시에 SSL 증명서를 취득하고 있으면 상기 코드의 변경은 불필요했다고도 생각할 수 있습니다.
덧붙여서 아래는 laravel의 공식 문서입니다.
TLS/SSL 증명을 하는 로드 밸런서의 뒤에서 어플리케이션이 실행되고 있는 경우, 어플리케이션이 때때로 HTTPS 링크를 생성하지 않는 것을 깨닫게 됩니다. 전형적인 이유는 트래픽이 로드 밸런서에 의해 80번 포트로 포워딩되기 때문에, 보안 링크를 생성해야 한다고 판단할 수 없기 때문입니다.
이 문제를 해결하려면 Laravel 응용 프로그램에 포함된 App\Http\Middleware\TrustProxies 미들웨어를 사용합니다. 이제 애플리케이션에 신뢰할 수 있는 로드 밸런서와 프록시를 쉽게 사용자 정의할 수 있습니다. 신뢰할 수 있는 프록시를 이 미들웨어의 $proxies 속성에 배열로 나열하십시오. 신뢰할 수 있는 프록시 설정 외에도 원본 요청에 대한 정보를 포함하여 프록시에서 보낸 헤더도 설정할 수 있습니다.
인용구 : ぇtps://레아도 bぇ. 이 m/ぁらゔぇl/5.5/쟈/레쿠에 sts. html
덤
①https가 관련되어 있다고 깨달은 것은 heroku의 환경 변수 설정에서 "developement"를 지정해 보았을 때에 문제없이 인증된 것이 계기였습니다.
명령
$ heroku config:set APP_ENV="development"
되돌릴 때
$ heroku config:set APP_ENV="production"
②이쪽은 라우팅의 설정입니다만, 잊지 마세요.
web.php
Auth::routes(['verify' => true]);
Reference
이 문제에 관하여(laravel 메일 인증 (EmailVerification)에서 인증 버튼을 누르면 403 오류 프로덕션 https에서만 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/Takagi-Yuya/items/47e80036bf15bbd0e50c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
$ heroku config:set APP_ENV="development"
$ heroku config:set APP_ENV="production"
Auth::routes(['verify' => true]);
Reference
이 문제에 관하여(laravel 메일 인증 (EmailVerification)에서 인증 버튼을 누르면 403 오류 프로덕션 https에서만 발생), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Takagi-Yuya/items/47e80036bf15bbd0e50c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)