Laavel 로그인 시 메일 인증 기능

5037 단어 Laraveltech

컨텐트


Laavel 표준 기능의 인증 외에 메일 인증도 가능하다.
메일 인증에 관한 일부 글이 있지만, 라벨 표준 기능을 활용해 간단하면서도 오류 없는 실현을 목표로 하고 있다.
메일의 발송원은 Gmail을 이용한다.
히로쿠 데프로 이후 오류가 발생했고, 여기도 해설을 했다.

메일 인증 기능


User.php 편집


//User.php
class User extends Authenticatable implements MustVerifyEmail
User.php의 class~ 이후 implements MustVerify Email 추가

Route 편집



//web.php
Auth::routes(['verify' => true]);
Laavel 표준 로그인 기능이 설치되어 있는 경우 Auth::routes(),다 된 것 같으니 위처럼 변경해 주세요.
//web.php
Route::middleware('verified')->group(function() {
//メール認証が完了した場合のみ、実行できるRoute
});

이 루트에 접근한 경우 ↓ 표시

블레이드의 일본어


상술한 사진의 내용은views/auth/verify이다.blade.php로 편집할 수 있습니다.
이번에는 그냥 일본어로 바꿨어요.
@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">メールアドレス認証はお済みですか?</div>

                <div class="card-body">
                    @if (session('resent'))
                        <div class="alert alert-success" role="alert">
                            新規認証メールを再送信しました!
                        </div>
                    @endif

                    このページを閲覧するには、Eメールによる認証が必要です。
                    もし認証用のメールを受け取っていない場合、
                    <form class="d-inline" method="POST" action="{{ route('verification.resend') }}">
                        @csrf
                        <button type="submit" class="btn btn-link p-0 m-0 align-baseline">こちらのリンク</button>をクリックして、認証メールを受け取ってください。
                    </form>
                </div>
            </div>
        </div>
    </div>
</div>
@endsection
참고문
https://webxreal.com/laravel-auth/

.env 편집


이번에 Gmail을 이용해서...
MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
[email protected]
MAIL_PASSWORD=アプリパスワード(詳しくは後述)
MAIL_ENCRYPTION=tls
[email protected]
MAIL_FROM_NAME=任意のアプリ名
MAIL_ENCRYPTION을 쓰지 않은 예는 이미 봤지만, 비어 있으면 보낼 수 없기 때문에 쓰는 게 좋다고 생각했다.
tls가 무엇인지 참조↓
https://www.idcf.jp/rentalserver/aossl/basic/ssl-tls/

Gmail 어플리케이션 암호 정보


MAIL_PASSWORD에 입력된 값은 Google 계정의 로그인 비밀번호가 아닙니다.
여기서부터 비밀번호를 입력하고 Google 계정의 보안을 설정합니다.

Google 계정 관리 화면을 열고 보안을 클릭

2단계 인증 사용

이후 응용 비밀번호를 설정할 수 있다.
다음 설정은 메일과 사용할 모델을 선택할 수 있습니다
비밀번호는 한 번만 확인할 수 있으니 주의하세요.
여기에서 얻은 16비트 비밀번호를 사용하십시오PASSWORD 작성
그래도 보낼 수 없는 상황에서.

안전한 곳의 이것을 열어라.
Google 계정 설정
https://snome.jp/framework/laravel-mail-submit/
메일 인증 기능의 실현이 이미 완성되었다

Heroku의 depro를 드리고.


Heroku를 디버깅한 후 받은 메일을 클릭하면 403 오류 invaid signature가 표시됩니다.
원인: 사이트의 URL은https화되었지만 메일의 URL은 http로 변했다
해결책
///Middleware/TrustProxies.php
<?php

namespace App\Http\Middleware;

use Fideloper\Proxy\TrustProxies as Middleware;
use Illuminate\Http\Request;

class TrustProxies extends Middleware
{
    /**
     * The trusted proxies for this application.
     *
     * @var array|string
     */
    protected $proxies= '*'; //ここを編集するだけ

    /**
     * The headers that should be used to detect proxies.
     *
     * @var int
     */
    protected $headers = Request::HEADER_X_FORWARDED_ALL;
}
참고문
https://qiita.com/Takagi-Yuya/items/47e80036bf15bbd0e50c
https://qiita.com/tsukiwakka/items/db6c7bb6b538075b1db5

좋은 웹페이지 즐겨찾기