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