php – 使用Laravel中的auth保护所有管理员/路由

前端之家收集整理的这篇文章主要介绍了php – 使用Laravel中的auth保护所有管理员/路由前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是全新的laravel,并在我的第一个应用程序设置管理员面板授权.我目前设置我的文件设置的方式是:
controllers/
    admin/
        dashboard.PHP
        settings.PHP
    non-admin-controller1.PHP
    non-admin-controller1.PHP
views/
    admin/
        dashboard.blade.PHP
        login.blade.PHP
        template.blade.PHP
    non-admin-view1.PHP
    non-admin-view1.PHP
    non-admin-view1.PHP

…这些是我的路线

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

Route::get('admin/logout',function()
{
    return Auth::logout();
    return Redirect::to('admin/login');
});

Route::post('admin/login',function()
{
    $userdata = array('username' => Input::get('username'),'password' => Input::get('password'));

    if (Auth::attempt($userdata))
    {
        return Redirect::to('admin');
    }
    else
    {
        return Redirect::to('admin/login')->with('login_errors',true);
    }
});

Route::controller('admin.dashboard');

Route::get('admin',array('before' => 'auth',function() {
    return Redirect::to_action('admin@dashboard');
}));

Route::filter('auth',function()
{
    if (Auth::guest()) return Redirect::to('admin/login');
});

当我去/管理我被重定向管理员/登录并要求登录,这正是我需要它的工作.登录后,我被重定向管理员/仪表板,这一切都看起来不错.我有2个问题.

>当我去管理/注销我已经注销但迎接一个空白页(它不是重定向管理员/登录)
>注销时,如果我去管理员/仪表板我遇到了错误

Error rendering view: [admin.dashboard]

Trying to get property of non-object

我在这里做错了什么?我做什么对了?为管理员创建单独的软件包会更有意义吗?谢谢!

所以我能够解决我的问题略有不同.我在控制器文件夹的根目录中创建了一个(基础)Admin_Controller,一个构造函数在执行之前调用auth过滤器:
class Admin_Controller extends Base_Controller {

    public function __construct()
    {
        $this->filter('before','auth');
    }

}

然后将我所有管理相关的控制器放在/ controllers / admin中,扩展Admin_Controller并调用父构造函数

class Admin_Dashboard_Controller extends Admin_Controller {

    public function __construct()
    {
        parent::__construct();
    }

    public function action_index()
    {
        return View::make('admin.dashboard');
    }

}

这可能不是最有说服力的解决方案,但它可以做到这一点!

猜你在找的Laravel相关文章