我是 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');
});
当我转到 /admin 时,我被重定向到 admin/login 并要求登录,这正是我需要它工作的方式。登录后,我被重定向到管理/仪表板,那里看起来也很好。但是我有两个问题。
-
当我进入管理/注销时,我已注销,但看到的是空白页面(它没有重定向到管理/登录)
-
注销后,如果我转到管理/仪表板,则会收到错误消息
渲染视图时出错:[admin.dashboard]
试图获取非对象的属性
我在这里做错了什么?我做对了什么?为管理员创建一个单独的捆绑包是否更有意义?谢谢!
所以我能够以稍微不同的方式解决我的问题。我在控制器文件夹的根目录中创建了一个(基本)Admin_Controller,并在执行之前使用构造函数调用身份验证过滤器:
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');
}
}
这可能不是最雄辩的解决方案,但它确实有效!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)