7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Laravel 6系以降のauth

Last updated at Posted at 2020-03-27

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

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://readouble.com/laravel/7.x/ja/authentication.html

7
10
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
7
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?