為了留存用戶,我們會想盡辦法獲取用戶的註冊,並將其留在應用內。
laravel開發好了一部分用戶註冊和登陸的代碼,如果圖省事不要二次開發的,
拿來用就可以了。而如果要深度定製用戶權限的開發者,也非常有必要了解用戶和授權相關的內容。
本期為大家說一說用戶註冊和登陸的功能。
用戶的數據和信息必然在資料庫內,所以laravel自帶了User模型,在 app/User.php 文件內,
內部代碼聲明了必要的部分:
namespace App;use Illuminate\Notifications\Notifiable;use Illuminate\Foundation\Auth\User as Authenticatable;class User extends Authenticatable{ use Notifiable; protected $fillable = [ 'name', 'email', 'password', ]; protected $hidden = [ 'password', 'remember_token', ];}
大家可能會注意到,這個模型文件與我們之前介紹的 Model 模型差別非常大,因為其直接繼承了 Illuminate\Foundation\Auth\User 類,
我們接著追溯該類的內容:
class User extends Model implements AuthenticatableContract, AuthorizableContract, CanResetPasswordContract{ use Authenticatable, Authorizable, CanResetPassword, MustVerifyEmail;}
原來在此處,User 類不僅繼承了Model模型類,還實現了很多個與權限相關的接口類。
這些內容,我們其他章節再詳細講解。
有了模型還沒有資料庫表,這個模型除了能處理邏輯,一點數據都拿不到。所以第一步我們要把資料庫遷移完成。
來看一下默認的users表的遷移文件 2014_10_12_000000_create_users_table.php 的內容,還是我們之前無數次強調過的,先實現 up 方法用於遷移表格:
public function up(){ Schema::create('users', function (Blueprint $table) { $table->id(); $table->string('name'); $table->string('email')->unique(); $table->timestamp('email_verified_at')->nullable(); $table->string('password'); $table->rememberToken(); $table->timestamps(); });}
還有一個是回滾遷移使用的 down 方法:
public function down(){ Schema::dropIfExists('users');}
遷移回滾的時候,如果users表創建成功了,就將其刪除。
在命令行執行遷移指令:
php artisan migrate
執行成功後使用mysql客戶端連接資料庫,列印users表結構,如下圖:
有了users表的數據支持,還有laravel內置的用戶邏輯,我們可以很方便地擁有一個登陸和註冊的頁面。
在命令行執行指令:
php artisan make:auth
這是一個腳手架指令,直觀地可以看到首頁登陸多了 LGOIN, REGISTER 導航按鈕。還有在 ** resources/views/auth** 目錄內,
創建了默認的視圖文件。
看一下路由文件 routes/web.php ,多了一行代碼:
Auth::routes();
這個就跟我們使用 Route::resource() 方法會默認創建restfulapi需要的所有控制器方法一樣,這個 Auth::routes() 所包含的內容,
都是跟用戶註冊登錄,忘記密碼,重置密碼等等息息相關的。
預註冊的路由如下圖:
這洋洋灑灑的路由和控制器方法,如果我們自己設計,那得費多少時間?這下好,拿來直接用了。要不說laravel真香呢!
下面是默認的註冊前端頁面。
本文介紹了如何使用laravel自帶的users表所關聯的用戶授權功能,
可以說是一個具有用戶功能的應用程式的基石,我們後面的文章會著重深入介紹。
Happy coding :-)
我是@程式設計師小助手,專注編程知識,圈子動態的IT領域原創作者