阻止其他用户查看/编辑彼此数据的最佳做法

时间:2014-04-01 05:26:49

标签: laravel-4

我是Laravel的新手并且想知道会是什么;是阻止用户编辑彼此数据的最佳做法。

我知道我可以使用过滤器和Auth来处理用户页面,例如

 Route::filter('auth', function($route)
   {
    $id = $route->getParameter('id');
     if( Auth::check() && Auth::user()->id != $id) {

      return Redirect::route('forbidden');
   }
});

但是我想知道关系页面是什么(例如/ user_profile / 14,user_settings / 22等)。我是否已为这些[组]路由中的每一个定义过滤器并检查id与该关系? e.g。

Route::filter('auth.user_settings', function($route)
{
    $id = $route->getParameter('id');
     if( Auth::check() && Auth::user()->user_settings->id != $id) {

      return Redirect::route('forbidden');
  });

Route::filter('auth.user_profile', function($route)
{
    $id = $route->getParameter('id');
     if( Auth::check() && Auth::user()->profile->id != $id) {

      return Redirect::route('forbidden');
  });

 ...etc

还是有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

我猜测你的路线可能是这样的:

Route::get('user_profile/{id}', function()

如果这是您为用户定义路线的方式,您可能希望将其更改为:

Route::get('user_profile', function()

然后在请求时,控制器将使用诸如 Profile :: findOrFail(Auth :: user() - > id)之类的内容从当前经过身份验证的用户加载适当的配置文件/设置在这种情况下,您不必担心用户签出其他个人资料,您只需要路由的'auth'过滤器组。