Help us understand the problem. What is going on with this article?

Laravel 6系以降のauth

使い方、ざっくりした流れ

1.laravel/uiライブラリをインストール

変更されるファイル
・composer.json
・composer.lock

composer require laravel/ui

2.LOGIN機能&テーブル作成

php artisan ui vue --auth

追加されるファイル
app/Http/Controllers/HomeController.php
resources/js/components/ExampleComponent.vue
resources/sass/_variables.scss
resources/views/auth/login.blade.php
resources/views/auth/passwords/email.blade.php
resources/views/auth/passwords/reset.blade.php
resources/views/auth/register.blade.php
resources/views/auth/verify.blade.php
resources/views/home.blade.php
resources/views/layouts/app.blade.php

変更されるファイル
package.json
resources/js/app.js
resources/js/bootstrap.js
resources/sass/app.scss
routes/web.php
webpack.mix.js

3.packageインストール(npmが必要)

npm install

4.CSS/JS 作成ビルド

npm run dev

laravel5系の場合

Laravel5系の場合は下記コマンドで6系、7系の上記コマンドと同じ環境になる

php artisan make:auth

認証メソッド

controller.php
use Illuminate\Support\Facades\Auth;

// 現在認証されているユーザーの取得
$user = Auth::user();

// 現在認証されているユーザーのID取得
$id = Auth::id();

// 認証チェック
if (Auth::check()) {
    // ユーザーはログインしている
} else {
  // ログインしていません
}

上記のように認証ユーザを取得してAuth::check()メソッドを使うとログイン済かログイン未なのかがチェックできるので、それに応じてログインページにリダイレクトさせたりできる。

デフォルト設定なら自動的にルーティングやコントローラが作成されているはずなので下記のようにしてログイン未ならリダイレクトとかやれば良いかとおもう。(ルーティングやコントローラは自身の環境確認してください)

return redirect('/login');

return redirect('/register');

※調べたらルーティングにmiddleware('auth')を追加するだけでログインフォームにリダイレクトされるみたいですね。
下記にまとめときます

特定ページに画面遷移したとき、ログインしてない場合はリダイレクトさせる方法

ルーティングの後にmiddleware('auth')を追加するだけ

Route::get('/hoge', 'HogeController@index')->middleware('auth');

ログイン処理の実装

# Auth::attempt()メソッドを使う

    if (Auth::attempt(['email' => $email,
                       'password' => $password])) {
                         $msg = "ログインしました。'( . Auth::user()->name . ')";
                       } else {
                         $msg = "ログインに失敗しました。";

controller.php
  public function getAuth(Request $request)
  {
    $params = ['message' => 'ログインしてください'];
    return view('hello.auth', $params);
  }

  public function postAuth(Request $request)
  {
    $email = $request->email;
    $password = $request->password;
    if (Auth::attempt(['email' => $email,
                       'password' => $password])) {
                         $msg = "ログインしました。'( . Auth::user()->name . ')";
                       } else {
                         $msg = "ログインに失敗しました。";
                       }
                       return view('hello.auth', ['message' => $msg]);
  }

独自で作ったログイン画面を使うこともできるし、デフォルトのログイン画面をカスタムして使うこともできるので、やり方次第でなんでもできそう。

参考サイト

https://qiita.com/rei67/items/d6d0f5f6e58edbb17c09

https://qiita.com/ucan-lab/items/bd0d6f6449602072cb87

公式:https://readouble.com/laravel/7.x/ja/authentication.html

mikaku
お仕事等のご依頼はこちらへ tkya0001@gmail.com
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした