搜尋

首頁  >  問答  >  主體

laravel 5.2用戶認證問題

版本:laravel 5.2

開啟使用者驗證後Route::auth()方法會自動註冊路由:

//Illuminate/Routing/Router类的auth方法
public function auth()
{
    // Authentication Routes...
    $this->get('login', 'Auth\AuthController@showLoginForm');
    $this->post('login', 'Auth\AuthController@login');
    $this->get('logout', 'Auth\AuthController@logout');

    // Registration Routes...
    $this->get('register', 'Auth\AuthController@showRegistrationForm');
    $this->post('register', 'Auth\AuthController@register');

    // Password Reset Routes...
    $this->get('password/reset/{token?}', 'Auth\PasswordController@showResetForm');
    $this->post('password/email', 'Auth\PasswordController@sendResetLinkEmail');
    $this->post('password/reset', 'Auth\PasswordController@reset');
}

產生AuthController控制器:

<?php

namespace App\Http\Controllers\Auth;

use App\User;
use Validator;
use App\Http\Controllers\Controller;
use Illuminate\Foundation\Auth\ThrottlesLogins;
use Illuminate\Foundation\Auth\AuthenticatesAndRegistersUsers;

class AuthController extends Controller
{
    /*
    |--------------------------------------------------------------------------
    | Registration & Login Controller
    |--------------------------------------------------------------------------
    |
    | This controller handles the registration of new users, as well as the
    | authentication of existing users. By default, this controller uses
    | a simple trait to add these behaviors. Why don't you explore it?
    |
    */

    use AuthenticatesAndRegistersUsers, ThrottlesLogins;

    /**
     * Where to redirect users after login / registration.
     *
     * @var string
     */
    protected $redirectTo = '/';//户成功进行登录认证后,默认将会跳转到路径

    /**
     * Create a new authentication controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware($this->guestMiddleware(), ['except' => 'logout']);
    }

    /**
     * Get a validator for an incoming registration request.
     *
     * @param  array  $data
     * @return \Illuminate\Contracts\Validation\Validator
     */
    protected function validator(array $data)
    {
        return Validator::make($data, [
            'name' => 'required|max:255',
            'email' => 'required|email|max:255|unique:users',
            'password' => 'required|min:6|confirmed',
        ]);
    }

    /**
     * Create a new user instance after a valid registration.
     *
     * @param  array  $data
     * @return User
     */
    protected function create(array $data)
    {
        return User::create([
            'name' => $data['name'],
            'email' => $data['email'],
            'password' => bcrypt($data['password']),
        ]);
    }
}

為什麼這個AuthController控制器並沒有定義login,logout等方法啊,但是存取localhost/login這些方法是有輸出的,這些方法在哪裡定義了呢?

這怎麼回事呢?

ringa_leeringa_lee2830 天前405

全部回覆(1)我來回復

  • 高洛峰

    高洛峰2017-05-16 16:54:32

    使用了

    trait AuthenticatesAndRegistersUsers

    點開源碼一看就知道了。

    非得要這樣麼

    ====學習 laravel 來這裡:https://laravist.com====

    點開AuthenticatesAndRegistersUsers,大概長這個樣子:

    trait AuthenticatesAndRegistersUsers
    {
        use AuthenticatesUsers, RegistersUsers {
            AuthenticatesUsers::redirectPath insteadof RegistersUsers;
            AuthenticatesUsers::getGuard insteadof RegistersUsers;
        }
    }

    再點開AuthenticatesUsers,裡面一堆方法不就出來了麼。

    回覆
    0
  • 取消回覆