【发布时间】:2014-07-17 10:05:26
【问题描述】:
我正在使用 Laravel 4.1 构建一个应用程序。我的应用需要有两种不同的用户,管理员和客户。为此,我在用户表中添加了一个类型列,并在 /app/filters.php 中创建了自定义过滤器。
Route::filter('admin', function()
{
if (Auth::guest() || Auth::user()->type !== 1) return Redirect::to('/');
});
Route::filter('client', function()
{
if (Auth::guest() || Auth::user()->type != 2) return Redirect::to('/');
});
然后我在 /app/routes.php 中创建了 Route::group
/* Admin */
Route::group(array('before' => 'admin'), function()
{
Route::get('admin', function(){ return "admin index"; });
Route::get('ejemplo', function(){ return "admin ejmplo"; });
});
/* Client */
Route::group(array('before' => 'client'), function()
{
Route::get('client', function(){ return "client index"; });
Route::get('ejemplo', function(){ return "client ejmplo"; });
});
我面临的问题是我无法访问Route::get('ejemlo'),我想到了一个解决方案:
- 在路由组中添加 if 语句,因此只有 Auth::user()->type( [x] ) 可以访问某些路由。
但由于我对 laravel 很陌生,我不想弄乱我的代码,使其无法扩展或无法维护。
我对任何其他解决方案或结构设计持开放态度,
提前非常感谢您。 干杯
【问题讨论】:
-
这就是过滤器的用途...检查它们是否正常工作(例如,
type真的是 int1吗?) -
是的,它是一个 int,当 Route::get('url') 重复时,过滤器工作得很好,我正在尝试命名路由,看看我是否可以让它工作
-
是
ejemplo作为client无法访问的问题吗? -
我无法以管理员身份访问 ejemlo,但我可以以客户端身份访问 ejemlo