[翻译] 如何修改 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 协议》,转载必须注明作者和本文链接
Night gathers, and now my watch begins.
本帖由 Summer 于 7年前 加精
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
Summer

这效率

7年前 评论
monkey

Cool :+1:

7年前 评论

s y su s j su

7年前 评论

红红火火

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!