1

我不想在 laravel 4 登录后显示登录页面。如果登录用户想要访问登录页面,它应该重定向到主页('/')。我正在使用 Sentry 进行身份验证。

过滤器.php

Route::filter(
    'auth', function () {
    if (!Sentry::check()) {
        return Redirect::to('login');
    }
}

路由.php

Route::get('login', array('as' => 'login', function() {
return View::make('login');
}))->before('guest');

Route::post('login', 'AuthController@postLogin');

AuthController.php

function postLogin() {
    try {
        // Set login credentials
        $credentials = array(
            'email' => Input::get('email'), 'password' => Input::get('password')
        );

        // Try to authenticate the user
        $user = Sentry::authenticate($credentials, false);
        if ($user) {
            return Redirect::to('/');
        }
    } catch (Cartalyst\Sentry\Users\LoginRequiredException $e) {
        return Redirect::to('login')->withErrors('Login field is required');
    }
}

成功登录后,如果请求登录页面,它仍然显示登录页面

4

1 回答 1

5

如果你使用 Laravel 的默认guest过滤器,它将不起作用,因为默认guest过滤器不会检查你的 Sentry 用户是否已登录。

试试这个:

Route::filter(
    'filter', function () {
    if (Sentry::check()) {
        return Redirect::to('/');
    }
}

在您的 routes.php 中,过滤器已经应用于登录路由,所以事情应该这样工作。

于 2013-09-01T16:18:44.443 回答