首页 文章

laravel 5.1 authlogin那些控制器方法在哪里?

提问于
浏览
2

我正在尝试laravel 5.1并根据文档我添加了这些路线:

  • Route :: get('auth / login','Auth \ _AuthController @ getLogin');

  • Route :: post('auth / login','Auth \ AuthController @ postLogin');

  • Route :: get('auth / logout','Auth \ AuthController @ getLogout');

注册路线......

  • Route :: get('auth / register','Auth \ _AuthController @ getRegister');

  • Route :: post('auth/register','Auth\AuthController@postRegister');

我在 auth 文件夹下创建了两个简单的视图: login.blade.php register.blade.php

它工作了!但是当我打开AuthController类时,我找不到getlogin()或getregister()或其他方法只有验证器和创建方法,那么getlogin(),getregister(),postlogin()等等在哪里呢?

3 回答

  • 3

    AuthController 可能如下所示:

    class AuthController extends Controller
    {
        // Truncated some content ...
    
        use AuthenticatesAndRegistersUsers; // Using the trait
    
        // Truncated some content ...
    }
    

    Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers 是一个特征, AuthController 使用(使用AuthenticatesAndRegistersUsers)这个特征,这个特征使用了另外两个特征 AuthenticatesUsersRegistersUsers ,检查 AuthenticatesAndRegistersUsers 特征:

    // Illuminate/Foundation/Auth/AuthenticatesAndRegistersUsers.php
    trait AuthenticatesAndRegistersUsers
    {
        use AuthenticatesUsers, RegistersUsers { // These traits contains the methods
            AuthenticatesUsers::redirectPath insteadof RegistersUsers;
        }
    }
    

    在这种情况下, AuthenticatesUsersRegistersUsers traits包含用于登录和注册的方法 . 您可以在 Illuminate/Foundation/Auth 找到这些特征,例如 AuthenticatesUsers 包含以下方法(包括其他方法):

    public function getLogin()
    {
        return view('auth.login');
    }
    

    还有其他可用的方法,检查那些以澄清您的理解 . 如果您不熟悉 PHP 中的 traits ,请在 PHP 手册上查看PHP traits .

  • 0

    如果你看一下 AuthController.php 的顶部,你会发现这一行:

    use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;
    

    就在课程开始时,你会发现:

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;
    

    我们可以忽略 ThrottlesLogins ,因为它可以做其他事情(它确保机器人不能自动尝试暴力进入你的系统) . 查看 Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers 的内容,这是整个文件:

    <?php
    
    namespace Illuminate\Foundation\Auth;
    
    trait AuthenticatesAndRegistersUsers
    {
        use AuthenticatesUsers, RegistersUsers {
            AuthenticatesUsers::redirectPath insteadof RegistersUsers;
        }
    }
    

    这两个 AuthenticatesUsersRegistersUsers 是由AuthController实现的特性,因此它可以使用其中定义的所有方法 .

    例如, getLogin() 方法是 AuthenticatesUsers 特征中的第一个方法 .

  • 7

    与身份验证相关的所有控制器都存储在Laravel中:

    vendor\laravel\framework\src\Illuminate\Foundation\Auth
    

    enter image description here

    ThrottlesLogins.php 仅适用于Laravel 5.1)

相关问题