laravel 4过滤器路线不工作

时间:2015-12-15 19:57:20

标签: laravel laravel-4 filter

我的应用程序中有一个管理部分工作正常,但是现在我想关闭它,所以只有管理员可以访问。基本上,如果非管理员试图访问管理页面,我想重定向到admin/login

这是我的管理路线(有效):

Route::controller('admin', 'AdminController');

我尝试在admin控制器路由上添加以下过滤器,并且我还注释掉了local数组元素,因此环境设置为生产,但它无法正常工作。

routes.php文件

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

Route::get('admin', array('before' => 'isAdmin', function() 
{
    echo 'You are over 200 years old!';
}));

Route::controller('admin', 'AdminController');

所以,如果现在我去mysite / admin,即使session admin不存在,我仍然可以访问管理信息中心。

1 个答案:

答案 0 :(得分:0)

这样的东西应该有用,这是未经测试的

<强> Filters.php

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

<强> routes.php文件

Route::group(['before' => 'isAdmin'], function() 
{
    Route::get('admin', 'AdminController@index');
});

<强> AdminController.php

<?php
class AdminController
{
    public function index()
    {
        echo 'they\'re an admin';
    }
}