Laravel 4阻止经过身份验证的用户查看其他用户配置文件

时间:2013-12-03 00:25:15

标签: php laravel-4 restful-authentication

我想知道laravel 4以下是如何可能的。我有一个过滤器来检查用户是否在具有user / *的所有路由上进行身份验证。我的过滤器可以正常运行,但可以说用户登录的url看起来像user/id。如何阻止经过身份验证的用户查看其他用户?

3 个答案:

答案 0 :(得分:6)

另一种方法是更改​​您的网址.. 为什么网址像user / {id}? 只需将其更改为例如

 user/profile

并在控制器内部执行以下操作:

$user = Auth::user();

那种方式用户只是不能假的是id .. 我只在管理区域使用带有id的网址,我需要编辑一些用户:

/admin/{id}/edit

答案 1 :(得分:4)

Auth过滤器中,您可以访问路由参数('user/{id}'),并可以使用id中传递的id检查登录用户的url

Route::filter('auth', function($route)
{
    // get the id from rouqe
    $id = $route->getParameter('id');
    if( Auth::check() && Auth::user()->id != $id) {
        // not authenticated user, so access is denied
        return Redirect::to('/');
    }
});

答案 2 :(得分:3)

如果是一个一揽子策略,用户只能查看自己的配置文件,那么您可以检查来自user / {id}路由的id是否与登录会话中的当前用户ID匹配,例如。在配置文件控制器中的内容如下:

public function getProfile($profile_id) {
    if (Auth::user()->id != $profile_id) {
        //this is not your profile - don't be nosey!
    } else {
        //have you got nothing better to do than look at yourself all day!
    }
}

格伦