无法打开页面到许多重定向

时间:2014-02-15 13:47:04

标签: php laravel

我有问题使用下面的代码来构建一个登录系统,它无法打开页面,因为重定向太多,我试图使文件夹路径像左 admin/login
admin/到AdminArticleController.php crud
admin下的任何路径都应该被检测登录或不登录,如何解决?

route.php

Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
    Route::get('/', function()
    {
        print 'article';
    });
    Route::get('/login', 'AdminDashboardController@getLogin');


    Route::post('/login', function()
    {    
    });
    Route::post('/logout', function()
{
    });
});

Route::filter('loginsession', function()
{
    if(!Session::has('loggedin'))
    {
        return Redirect::to('admin/login');
    }
});

UPDATE
访问admin/包含admin/loginadmin/article/..

下的任何文件时,如何检查会话
Route::resource('admin/article','AdminArticleController');

2 个答案:

答案 0 :(得分:1)

您正在创建重定向循环,因为login路由位于要求您登录的过滤器内。如果您未登录,Laravel将会:

  1. 用户是否已登录?不,重定向到admin/login
  2. Laravel然后检查loginsession过滤器,然后尝试再次重定向
  3. 转到第1步。
  4. login路线移到包含过滤器loginsession的组之外。

    这一行:

    Route::get('/login', 'AdminDashboardController@getLogin');
    

答案 1 :(得分:1)

Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
    Route::get('/', function()
    {
        print 'article';
    });
    Route::get('/login', 'AdminDashboardController@getLogin');


    Route::post('/login', function()
    {    
    });
    Route::post('/logout', function()
{
    });
});

认为....过滤器将被应用。但是如果执行了admin/login,他就无法登录,因为过滤器会重定向到同一个动作。

login放出群组。喜欢:

Route::get('/login', 'AdminDashboardController@getLogin');

Route::group(array('prefix' => 'admin', 'before' => 'loginsession'), function()
{
    Route::get('/', function()
    {
        print 'article';
    });


    Route::post('/login', function()
    {    
    });
    Route::post('/logout', function()
{
    });
});

更新

根据您的更新,过滤器不会在Resoruce路线中应用。

最简单的方法是

Route::when('admin/*', 'loginsession');

将它放在路径文件中的任何位置并完成。