iT邦幫忙

第 11 屆 iT 邦幫忙鐵人賽

DAY 16
0
Modern Web

Laravel 6.0 初體驗!怎麼用最新的 laravel 架網站!系列 第 16

[Day 16] 網站要有會員了!用 Laravel 實作用戶登入

留言板可以有文章,文章可以選主題,很快也應該要真的開放留言了吧!

但是,首先我們得避免被奇怪的路人隨意留言呀!

所以說,我們需要一個會員系統,來紀錄每個留言的作者才對

Laravel 的會員系統

會員系統一般來說,包含登入,註冊等等行為,還要包含前端畫面。感覺需要花很多時間處理。

我們真的可以在一篇文章內處理完畢嗎?

幸運的是!Laravel 的會員系統處理起來非常簡單!

首先,我們需要安裝一個產生畫面的套件:laravel/ui

$ composer require laravel/ui
......
Package manifest generated successfully.

利用這個套件,我們直接用指令產生會員所需的基本畫面

$ php artisan ui vue --auth
Vue scaffolding installed successfully.
Please run "npm install && npm run dev" to compile your fresh scaffolding.

 The [layouts/app.blade.php] view already exists. Do you want to replace it? (yes/no) [no]:
 > yes

Authentication scaffolding generated successfully.

這裡我們遇到之前練習時所建立的 layouts/app.blade.php,直接覆蓋過就好。

然後,我們進到 http://127.0.0.1 看看

laravel login page

右上角出現登入註冊選項了??我們點進去 REGISTER 看看

laravel register page

基本的註冊畫面已經做好了!登入呢?

laravel login page

登入畫面也做好啦!真是太方便了!

我們可以在註冊畫面裡面輸入帳密看看。如果順利,應該會在註冊成功的同時直接登入!

註冊帳號完成之後,我們進入資料庫看看狀況

laravel user database

裡面每個欄位都蠻容易理解的,不過 password 比較難懂一點,到底是怎麼回事?

這,就要聊一點點資訊安全的觀念囉!


一般來說,初次設計帳密的時候,如果沒有人教,可能會想直接把密碼存在資料庫裡面,以便登入的時候比對密碼。

不過,這樣會有一個很大的問題,那就是如果有一天有人竊聽對話資料,或者更糟糕的,竊取到整個資料庫。那麼你的用戶所有的密碼就都洩漏出去了。這是很嚴重的資訊危害。

所以,比較安全的做法是,你必須用雜湊(hash)的方式,將密碼轉換成唯一,但是不可能逆轉的一串文字。

這樣的話,下次需要比對密碼時,你就用相同的雜湊方式處理輸入,如果跟密碼轉換過後的結果相同,那麼就知道密碼是正確的了。

而且,即使資料庫不幸被竊取資料,這些資料也不可能被逆轉成原本的密碼。

雜湊的處理有一點點麻煩,很幸運的是,Laravel 在這裏直接幫我們處理好了。

$hash = password_hash($value, PASSWORD_BCRYPT, [
    'cost' => $this->cost($options),
]);

利用 PHP 原生的 password_hash() 密碼就可以安全變成無法逆轉的雜湊囉!

權限管理

可以登入之後,當然要做一些權限管理囉!

我們可以用 Auth::check() 判斷用戶登入了沒,一樣用測試路徑看看

Route::get('/test', function(){
    var_dump(Auth::check());
});

登入狀況下可以看到 bool(true),登出之後則會是 bool(false)

如果要取得現在用戶是哪位,可以用 Auth::user() 取得用戶資料

Route::get('/test', function(){
    echo Auth::user();
});

可以看到

{
    id: 1,
    name: "aaa",
    email: "aaa@aaa.aaa",
    email_verified_at: null,
    created_at: "2019-09-18 14:16:14",
    updated_at: "2019-09-18 14:16:14"
}

今天差不多就這樣囉,我們來看看學了些什麼

今天我們學會怎麼使用 Laravel 建立註冊登入的畫面,然後還學會怎麼判斷用戶有沒有登入,有的話是哪一位用戶。

希望今天大家有收穫!我們明天見!


上一篇
[Day 15] 終於講到 6.0 的改變了!來看 Laravel LazyCollection
下一篇
[Day 17] 開始貼文囉!談操作 Model 的 resource 功能
系列文
Laravel 6.0 初體驗!怎麼用最新的 laravel 架網站!30

尚未有邦友留言

立即登入留言