12_login - hpscript/laravel GitHub Wiki

ログイン機能の基礎

$ php artisan make:auth

$ php artisan migrate

mysql> select * from users;
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| id | name  | email           | password                                                     | remember_token | created_at          | updated_at          |
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
|  1 | peter | [email protected] | $2y$10$XeLPWQLyU1h2HpD7QAta3uOLUiXZyqpy7SSYRc4tkKrzrDUr3tOJS | NULL           | 2019-12-11 12:34:31 | 2019-12-11 12:34:31 |
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
1 row in set (0.00 sec)

route

Route::get('/', function () {
    return view('welcome');
});
Route::auth();
Route::get('/home', 'HomeController@index');

Route::auth();で、login, logout, pasword/*, registerなどのURIをルーティングしている

$ php artisan route:list
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
| Domain | Method   | URI                     | Name | Action                                                          | Middleware |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+
|        | GET|HEAD | /                       |      | Closure                                                         | web        |
|        | GET|HEAD | home                    |      | App\Http\Controllers\HomeController@index                       | web,auth   |
|        | GET|HEAD | login                   |      | App\Http\Controllers\Auth\AuthController@showLoginForm          | web,guest  |
|        | POST     | login                   |      | App\Http\Controllers\Auth\AuthController@login                  | web,guest  |
|        | GET|HEAD | logout                  |      | App\Http\Controllers\Auth\AuthController@logout                 | web        |
|        | POST     | password/email          |      | App\Http\Controllers\Auth\PasswordController@sendResetLinkEmail | web,guest  |
|        | POST     | password/reset          |      | App\Http\Controllers\Auth\PasswordController@reset              | web,guest  |
|        | GET|HEAD | password/reset/{token?} |      | App\Http\Controllers\Auth\PasswordController@showResetForm      | web,guest  |
|        | GET|HEAD | register                |      | App\Http\Controllers\Auth\AuthController@showRegistrationForm   | web,guest  |
|        | POST     | register                |      | App\Http\Controllers\Auth\AuthController@register               | web,guest  |
+--------+----------+-------------------------+------+-----------------------------------------------------------------+------------+

デフォルトのビューは、resources/viewの以下のファイル

auth/emails/password.blade.php
auth/login.blade.php
auth/passwords/email.blade.php
auth/passwords/reset.blade.php
auth/register.blade.php
home.blade.php
welcome.blade.php

ログインの処理はAuthController.phpでしている
同様にPasswordController.phpも使用

mysql> select * from users;
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
| id | name  | email           | password                                                     | remember_token | created_at          | updated_at          |
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+
|  1 | peter | [email protected] | $2y$10$XeLPWQLyU1h2HpD7QAta3uOLUiXZyqpy7SSYRc4tkKrzrDUr3tOJS | NULL           | 2019-12-11 12:34:31 | 2019-12-11 12:34:31 |
+----+-------+-----------------+--------------------------------------------------------------+----------------+---------------------+---------------------+

remember_tokenのカラムは、remember meにチェックを入れると、保存される。

homeController.php

$this->middleware('auth');で認証処理を実装
ログインしていないと、login.blade.phpにリダイレクト

public function __construct()
    {
        $this->middleware('auth');
    }

Controller: HomeController.php

use Illuminate\Support\Facades\Auth;
public function index()
    {
        $user = Auth::user();
        return view('home', compact('user'));
    }

View: home.blade.php

<div class="panel-body">
                    You are logged in {{$user->name}}!
                </div>

Route

Route::get('/', function () {
    // return view('welcome');
    if(Auth::check()){
    	return "the user is logged in";
    }
});
Route::get('/', function () {
    // return view('welcome');
    // if(Auth::check()){
    // 	return "the user is logged in";
    // }
    $user = "";
    $password = ""; 
    if(Auth::attempt(['username'=>$username, 'password'=>$password])){
    	return 	redirect()->intended('/admin');
    }

});
⚠️ **GitHub.com Fallback** ⚠️