Laravel 包含一個 auth 系統,它包括一整套完整的註冊、登入、登出、忘記密碼等流程,讓你可以非常方便的構建出使用者系統的骨架。
所有設定完成後,登入和密碼重置的驗證邏輯被儲存在兩個 trait 中, AuthenticatesUsers 和 ResetsPasswords 。這藏的有點深,不過它們也很容易按需調整。讓我們看看怎麼整:
登入驗證
預設情況下,只有 LoginController 這個類會引入 trait Illuminate\Foundation\Auth\AuthenticatesUsers 。如果你開啟這該 trait 你會找到方法 validateLogin :
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required', 'password' => 'required',
]);
}
修改這段邏輯很簡單,把整個方法程式碼複製進你的 LoginController 中,然後直接做你想要的修改。只需要你確定你新增了 use 這一行的內容。
<?php
namespace App\Http\Controllers\Auth;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\AuthenticatesUsers;
class LoginController extends Controller
{
use AuthenticatesUsers;
public function __construct()
{
$this->middleware('guest', ['except' => 'logout']);
}
protected function validateLogin(Request $request)
{
$this->validate($request, [
$this->username() => 'required',
'password' => 'required',
// new rules here
]);
}
}
重置密碼驗證
從 v5.3.20 開始,重置密碼驗證的邏輯也變成這樣。在 Illuminate\Foundation\Auth\ResetsPasswords 中包含了一個方法 rules ,你可以在你自己的 ResetPasswordController 中擴充套件它
protected function rules()
{
return [
'token' => 'required', 'email' => 'required|email',
'password' => 'required|confirmed|min:6',
];
}
Laravel 通過這種方式,提供了常見的用法的同時,也方便你為自己的需求進行定製。
本作品採用《CC 協議》,轉載必須註明作者和本文連結