laravel 實現使用者登入登出並限制
1. 建立登入控制器
在專案根目錄輸入: php artisan make:controller Admin/LoginController
2.建立使用者模組 以及資料庫
php artisan make:model Model/Admin -m
執行之後 專案中會新增兩個PHP檔案
新建立了admins使用者表,此使用者表預設新建中只有主鍵,建立時間,編輯時間。我們接下來新加兩個欄位 使用者名稱(username)
和密碼(password).
在up函式中加上這兩個欄位,後面可以按自己的需求新增屬性。
laravel預設的字符集是utf8mb4,新增的資料庫欄位會有這個字符集,想要改成utf8 可以直接修改datebase
接下來執行資料遷移命令 php artisan migrate 來建立資料表
執行之後資料庫中新增了admins表
3.填充資料
因為還沒有做註冊所以我們利用tinker來表中填充資料,如果已經做了註冊功能就不用坐下面的步驟了,也可以直接執行sql,直接
填充,保證密碼加密。
首先在配置中新增想要新增的資料。在datebase/factories/
define方法裡面寫自己的使用者模組的命名,裡面加上預設密碼。
之後執行php artisan tinker 命令 裡面輸入 factory(模組命名,條數);
執行之後資料庫中新增了三條資料,例項中密碼都是admin。
4.使用者登入配置
首先在config/auth.php中新增配置,框架預設都是走的自帶的User模組。
加上圖中的兩個配置,命名按照自己的模組名字來命名。
修改模組繼承函式跟系統的自帶的User.php一樣就可以了。
5.登入函式
這裡先略過前段頁面的表單的寫法以及表單提交的方式,直接獲取資料的函式來寫。
$statue = Auth::guard('admin')->attempt([
'username'=>$request->input('username'),
'password'=>$request->input('password'),
]);
以上就是登入函式,guard函式中寫入自己在auth.php配置中寫的命名。指定使用者登入的表。
在前段頁面中獲取的時候也要指定命名。
6.限制頁面許可權
後臺登陸首頁之前判斷是否登陸,如果沒有登入則跳轉到登入頁。
首先做一箇中間件,讓每個頁面控制器執行之前先執行中介軟體,我們在中介軟體中寫一些頁面是否有許可權訪問的動作。
執行之後裡面填寫驗證指定的表使用者是否登陸
之後我們在kernel.php中新增中介軟體
我們在登入的控制器中呼叫,並指定哪個函式不需要限制。
7.登出