Laravel 5 Auth返回302和原始登录屏幕响应

时间:2015-04-17 17:38:17

标签: php laravel laravel-5 laravel-routing

在我的Auth中我有:

class AuthController extends Controller {
    public function __construct(Guard $auth, Registrar $registrar)
{
    $this->auth = $auth;
    $this->registrar = $registrar;

    $this->middleware('guest', ['except' => 'getLogout']);
}

public function checkSession()
{
    return 'test';
    if (!Auth::check()){
        return false;
    }
    //return Response::json(['guest' => Auth::guest()]);
}
}

如果用户的会话已过期,则会自动将用户重定向回登录屏幕:

$(function () {
    setInterval(function checkSession() {
        $.get('/check-session', function (data) {
            if (data.guest) {
                location.reload();
            }
        });
    }, 5000);
});

然而它不起作用。 checkSession请求什么都不返回,然后返回302.另一个请求也会立即发生,返回登录屏幕的源代码。


routes.php文件

Route::group(['namespace' => 'Auth'], function () {
    Route::get('/', 'AuthController@getLogin');
    Route::post('login', ['as' => 'login', 'uses' => 'AuthController@postLogin']);
    Route::get('/logout', ['as' => 'logout', 'uses' => 'AuthController@getLogout']);
    Route::get('check-session', ['as' => 'session.check', 'uses' => 'AuthController@checkSession']);
});

Route::group(['middleware' => 'auth'], function () {

    ...

});

我试过把它放在上面的组中,但它给出了相同的结果。

1 个答案:

答案 0 :(得分:4)

我做了以下工作并且有效:

$this->middleware('guest', ['except' => ['getLogout', 'checkSession']]);

而不是:

$this->middleware('guest', ['except' => 'getLogout']);