Php 如何阻止同一类型的用户访问Laravel中的其他数据?
我的项目有两种类型的用户,管理员和客户端。我需要通过URL传递id来阻止客户端访问其他客户端的详细信息,如下所述。在这类客户中,有两类,高级客户和客座客户。在这里我还需要上述功能。我使用过滤器将不同的仪表板路由到管理员和客户端。下面给出了我的filter.php文件Php 如何阻止同一类型的用户访问Laravel中的其他数据?,php,laravel,laravel-4,laravel-5,laravel-routing,Php,Laravel,Laravel 4,Laravel 5,Laravel Routing,我的项目有两种类型的用户,管理员和客户端。我需要通过URL传递id来阻止客户端访问其他客户端的详细信息,如下所述。在这类客户中,有两类,高级客户和客座客户。在这里我还需要上述功能。我使用过滤器将不同的仪表板路由到管理员和客户端。下面给出了我的filter.php文件 Route::filter('auth', function() { if (Auth::guest()) { if (Request::ajax()) { r
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::route('home');
}
}
});
Route::filter('admin', function()
{
if (Auth::user()->isAdmin != 0) return Redirect::route('getLogout');
});
Route::filter('client', function()
{
if (Auth::user()->isAdmin != 1) return Redirect::route('getLogout');
});
Route::group(array('before' => 'auth'), function()
{
Route::group(array('before' => 'auth|client'), function()
{
Route::get('profile/{id}', array('uses' => 'ClientController@viewProfile', 'as' =>'viewProfile'));
});
});
Thsi工作正常
但如果一个客户试图通过URL访问其他客户的详细信息,他会得到它。例如,在我的项目中,有一个URL用于访问客户端配置文件。这是通过像“localhost/public/profile/{id}”这样的url传递客户端id来完成的。下面给出了route.php文件的一部分
Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::route('home');
}
}
});
Route::filter('admin', function()
{
if (Auth::user()->isAdmin != 0) return Redirect::route('getLogout');
});
Route::filter('client', function()
{
if (Auth::user()->isAdmin != 1) return Redirect::route('getLogout');
});
Route::group(array('before' => 'auth'), function()
{
Route::group(array('before' => 'auth|client'), function()
{
Route::get('profile/{id}', array('uses' => 'ClientController@viewProfile', 'as' =>'viewProfile'));
});
});
如何通过使用筛选器或其他方法传递其id来阻止客户端访问其他客户端配置文件?我尝试在控制器中指定,但看起来不太好
在我的客户机中,还有两种类型的客户机。优质客户和客座客户。这些类型是在模型命名客户机中为表命名客户机指定的。在clients表中有一个名为type的字段。我需要阻止来宾客户端访问一些高级客户端可以访问的URL
有人能帮上忙吗?基本思想是创建一个获取当前用户ID,将其与请求中的用户ID进行比较,然后采取所需的操作,这可能是重定向到其他地方。将其环绕在您希望其影响的任何路线上 过滤器的外观如下所示:
Route::filter('profile_access', function($route, $request, $value)
{
$requestedId = $route->getParameter('id');
$userId = MyUserService::getCurrentUser()->getId();
// compare and redirect...
});