Laravel陷入了身份验证循环

时间:2014-12-22 20:12:46

标签: php laravel laravel-routing

我陷入了认证循环,因为我的生活无法理解为什么。

Route::get('/', function()
{
    return View::make('hello');
    //return 'Hello ' . Auth::user()->first_name . '!';
});

Route::get('/login', function() {
    return View::make('login'); 
});

Route::post('/login', function() {

    // @TODO: Validate the login details!

    Auth::attempt(array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
        ));

    return Redirect::to('/');
});


Route::group(array('before' => 'auth'), function() {

    Route::get('/home', function()
    {
        //return View::make('hello');
        return 'Hello ' . Auth::user()->first_name . '!';
    });


    /*
    |--------------------------------------------------------------------------
    | API Route Handlers
    |--------------------------------------------------------------------------
    |
    | The API Routes.
    |
    */

    Route::group(array('prefix' => 'api/v1'), function() {

        Route::resource('events', 'EventsController');

    });

});

以下是事件序列:

我转到localhost:8000/home它可以正常工作并将我重定向到/login

然后我继续登录。

如果我转到/,它会将我重定向到/home,它仍会将我带到/login

理想情况:

转到/home仅重定向到/login

然后我登录。

它将我重定向到/

然后,我可以在//home之间自由移动而无需担心登录。

编辑1

    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('users', function (Blueprint $table) {
            $table->increments('id');

            $table->string('email')->unique();
            $table->string('password');

            $table->string('first_name');
            $table->string('last_name');
            $table->string('id_number')->unique();

            $table->enum('user_type', array('option 1', 'option 2', 'option 3'));

            $table->rememberToken();

            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('users');
    }

1 个答案:

答案 0 :(得分:0)

修正了 - 问题是没有设置Auth::attempt()的值。

这是我新的代码版本。

Route::get('/', function()
{
    return View::make('hello');
    //return 'Hello ' . Auth::user()->first_name . '!';
});

Route::get('/login', function() {
    return View::make('login'); 
});

Route::post('/login', function() {

    // @TODO: Validate the login details!

    $valid = Auth::attempt(array(
        'email' => Input::get('email'),
        'password' => Input::get('password')
        ));

    if ($valid)
    {
        return Redirect::to('/home');
    } 
    else 
    {
        return Redirect::to('/');
    }

});


Route::group(array('before' => 'auth'), function() {

    Route::get('/home', function()
    {
        //return View::make('hello');
        return 'Hello ' . Auth::user()->first_name . '!';
    });


    /*
    |--------------------------------------------------------------------------
    | API Route Handlers
    |--------------------------------------------------------------------------
    |
    | The API Routes.
    |
    */

    Route::group(array('prefix' => 'api/v1'), function() {

        Route::resource('events', 'EventsController');

    });

});