[翻译] 如何修改 Laravel 的登录验证
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 协议》,转载必须注明作者和本文链接
本帖由 Summer
于 8年前 加精
这效率
这效率
漂亮
Cool :+1:
s y su s j su
红红火火