留言板可以有文章,文章可以選主題,很快也應該要真的開放留言了吧!
但是,首先我們得避免被奇怪的路人隨意留言呀!
所以說,我們需要一個會員系統,來紀錄每個留言的作者才對
會員系統一般來說,包含登入,註冊等等行為,還要包含前端畫面。感覺需要花很多時間處理。
我們真的可以在一篇文章內處理完畢嗎?
幸運的是!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 看看
右上角出現登入註冊選項了??我們點進去 REGISTER 看看
基本的註冊畫面已經做好了!登入呢?
登入畫面也做好啦!真是太方便了!
我們可以在註冊畫面裡面輸入帳密看看。如果順利,應該會在註冊成功的同時直接登入!
註冊帳號完成之後,我們進入資料庫看看狀況
裡面每個欄位都蠻容易理解的,不過 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 建立註冊登入的畫面,然後還學會怎麼判斷用戶有沒有登入,有的話是哪一位用戶。
希望今天大家有收穫!我們明天見!