LaravelAuth是Laravel框架自帶的用戶認證系統,它提供了基於密碼、基於令牌的認證方式,以及註冊、找回密碼等功能。在開發過程中,我們經常需要使用到用戶身份驗證,這時LaravelAuth就成為了我們最好的選擇。
一、安裝LaravelAuth
1、使用Composer安裝Laravel:
composer create-project --prefer-dist laravel/laravel blog
2、生成LaravelAuth默認的用戶認證文件:
php artisan make:auth
3、生成用戶認證所需的數據表:
php artisan migrate
這樣我們就可以在Laravel中使用LaravelAuth了。
二、使用LaravelAuth實現身份認證
1、中間件auth:
Laravel中間件auth已經預定義,我們可以使用它來防止未經授權的用戶訪問指定頁面。只需要在路由定義中加入auth中間件即可:
Route::get('/home', 'HomeController@index')->name('home')->middleware('auth');
這樣,未登陸的用戶訪問/home頁面時,會被重定向到登錄頁面。需要注意的是,如果在控制器中定義路由,可以在構造函數中添加middleware,如:
public function __construct()
{
$this->middleware('auth');
}
2、用戶認證:
LaravelAuth提供了許多方法供我們使用:
- Auth::check():判斷用戶是否登錄
- Auth::user():獲取當前用戶的模型實例
- Auth::id():獲取當前用戶的id
- Auth::logout():退出登錄
在控制器中可以這樣使用:
use Illuminate\Support\Facades\Auth;
public function index()
{
if (Auth::check()) {
// 用戶已登錄
} else {
// 用戶未登錄
}
}
三、定製LaravelAuth
1、自定義認證驅動:
LaravelAuth默認使用Eloquent來執行用戶認證,但我們可以通過創建自定義認證驅動,實現我們自己的身份驗證邏輯。
首先,我們需要在config/auth中定義一個新的驅動:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'newDriver' => [
'driver' => 'newDriver',
'provider' => 'users',
],
],
然後,我們需要創建一個新的驅動並實現用戶驗證方法:
namespace App\Auth;
use Illuminate\Auth\EloquentUserProvider;
use Illuminate\Contracts\Auth\Authenticatable as UserContract;
use Illuminate\Contracts\Auth\UserProvider as Provider;
class NewDriverUserProvider extends EloquentUserProvider implements Provider
{
public function validateCredentials(UserContract $user, array $credentials)
{
// 自定義驗證邏輯
return true;
}
}
最後,我們需要在config/auth中定義一個新的用戶提供者:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
],
'newProvider' => [
'driver' => 'newDriver',
'model' => App\User::class,
],
],
現在我們就可以在config/auth中指定使用我們自定義的認證驅動了:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
],
'newDriver' => [
'driver' => 'newDriver',
'provider' => 'newProvider',
],
],
2、自定義登錄驗證字段:
LaravelAuth默認使用email來作為登錄驗證字段,如果我們想要使用其他字段來作為登錄驗證字段,需要在config/auth中進行配置:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\User::class,
'username' => 'username', // 登錄驗證字段
],
],
四、總結
以上就是LaravelAuth的一些介紹及應用,希望對你有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/290817.html