LoginSignup
0
0

More than 3 years have passed since last update.

LaravelのAuth認証について1から学ぶ #1

Last updated at Posted at 2019-10-29

「php artisan make:Authとphp artisan migrateを打ち込むと誰でも簡単に認証機能を使える。Readoubleにもそう書いてある。」

Laravelは標準で認証機能を用意しており、上記のコマンドをターミナルやコマンドプロンプトに打ち込むと簡単に認証機能を使えます。なら何も考えずにmake:Authして気軽に認証機能を使えばいいの?いやいやセキュリティ機能はLaravelの重要な特長の一つ(らしい)で、今後のためにしっかり勉強しておこうと思ったので、コードとReadouble(Laravelの公式リファレンスの日本語訳)を追いつつ勉強記録を記事として残します。

php artisan make:Auth

認証用のメソッドはApp\Http\Controller\Auth 以下にもともと用意されているんですが、php artisan make:Authコマンドをターミナルなどで打ち込むことでルート登録、Userモデルの作成、テンプレート作成を行ってくれます。

ルート登録、メソッド確認

ルート登録
これで複数のルートが登録されController/Auth以下のメソッドが使用可能になります。

routes/web.php
Auth::routes(); 

1 register

App\Http\Controllers\Auth\RegisterController.php
class RegisterController extends Controller
{

    use RegistersUsers;

    protected $redirectTo = '/home';

    public function __construct() // ①
    {
        $this->middleware('guest');
    }

    protected function validator(array $data) // ②
    {
        return Validator::make($data, [
            'name' => ['required', 'string', 'max:255'],
            'email' => ['required', 'string', 'email', 'max:255', 'unique:users'],
            'password' => ['required', 'string', 'min:8', 'confirmed'],
        ]);
    }

    protected function create(array $data) // ③
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => Hash::make($data['password']),
        ]);
    }
}

①のコンストラクタでミドルウェアを使って、以下のメソッドを新規ユーザーのみが使用できるようにする。②でバリデーション、③でUserモデル作ってユーザー作成ね、ふんふん

middleware('guest')を見てみましょう。

App\Http\kernel.php
        ...
        'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class,
        ...
    ];
App\Http\Middleware\RedirectIfAuthenticated.php
{

    public function handle($request, Closure $next, $guard = null)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/home');
        }

        return $next($request);
    }
}

Auth::guardで認証チェック
もし認証されていたら/homeに飛ばす、されていなかったら何もしない

guardはガードはどのようにユーザーを認証するかを定義するものです。Webの場合デフォルトではセッションストレージとクッキーを使いながら状態を維持するsessionガードが使われています(APIの場合はトークン)。

短い気もしますが今回はここまでです。疲れた。
次回は(できれば)guardの仕組みについて見てみたいです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0