$ php artisan make:auth
$ php artisan migrate
mysql> select * from users;
+—-+——-+—————–+————————————————————–+—————-+———————+———————+
| id | name | email | password | remember_token | created_at | updated_at |
+—-+——-+—————–+————————————————————–+—————-+———————+———————+
| 1 | peter | peter@gmail.com | $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の以下のファイルになります。
bootstrapで書かれていますが、シンプルなので、確認しておきます
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 | peter@gmail.com | $2y$10$XeLPWQLyU1h2HpD7QAta3uOLUiXZyqpy7SSYRc4tkKrzrDUr3tOJS | NULL | 2019-12-11 12:34:31 | 2019-12-11 12:34:31 |
+—-+——-+—————–+————————————————————–+—————-+———————+———————+
remember_tokenのカラムは、remember meにチェックを入れると、保存される。
キャッシュの$valueでしょうか?
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'); } });
Laravelのデフォルト機能に合わせて設計を修正するのはナンセンスのように思うので、
ログインも実装パターンを研究する必要がある。