Auth登入驗證是laravel框架自帶的一種登入驗證方式,下面來介紹一下用Auth來實現使用者的登入,退出,及獲取登入使用者資訊的方法。
以laravel5.5框架為例,首先建立一個user model,關聯資料庫的user表,生成的模型內容如下:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
//關聯表
protected $table = 'users';
//可新增欄位
protected $fillable = ['name','email','password'];
//隱藏欄位
protected $hidden = ['password','member_token'];
}
1.實現Auth登入的第一步就是對生成的模型進行改造,引入Authenticatable認證介面,並且改變model的繼承方式,改為Authenticatable繼承,改造後的程式碼如下:
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable
{
//關聯表
protected $table = 'users';
//可新增欄位
protected $fillable = ['name','email','password'];
//隱藏欄位
protected $hidden = ['password','member_token'];
}
2.在laravel框架中找到config檔案中的auth.php檔案,找到如下程式碼:
'providers' => [
'users' => [
'driver' => 'eloquent',
'model' => App\Models\User::class,
],
這部分是auth認證模組的資料介面,把model的路徑改為剛才建立的model路徑即可。
3.在更改好user模型之後,我們就可以進行對此模型資訊的登入認證功能了。Auth為我們們提供了一下幾種登入的認證的使用方法:
驗證登入方法:Auth::attempt(['email' => $email, 'password' => $password])
登入方法:Auth::login()
退出登入方法:Auth::logout()
驗證是否登入:@if (Auth::check()) 已登入 @endif
輸出儲存資訊:Auth::user()
4.登入 退出 邏輯展示
登入
public function login(Request $request){
//正則驗證
$credentials = $this->validate($request, [
'email' => 'required|email|max:255',
'password' => 'required'
]);
//驗證登入
if (Auth::attempt($credentials,$request->has('remember'))) {
if(Auth::user()->activated=='1'){
session()->flash('success','歡迎回來!');
return redirect()->intended(route('users.show',[Auth::user()]));
}else{
Auth::logout();
return redirect('/');
}
} else {
// 登入失敗後的相關操作
session()->flash('danger', '很抱歉,您的郵箱和密碼不匹配');
return redirect()->back();
}
return;
}
退出
public function end()
{
Auth::logout();
session()->flash('success', '您已成功退出!');
return redirect('login');
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結