我正在使用laravel 4开发一个应用程序。我在两个表上执行以下连接:
$listings = DB::table('user')
->join('listings', 'listings.agent_id', '=', 'user.id')
->where('user.user_level', '=', 3)
->get();
var_dump($listings);
这不是像预期的那样工作,但在var_dump中它返回哈希密码,我不希望它这样做。
public 'password' => string '$2y$10$o58S16Tw2yc2uvcIs.cy3.lbmyFgUZjTl7nMdLzU2AVXeXVCY5xqK' (length=60)
我有在我的用户模型:
protected $hidden = array('password');
但是,我认为这只是隐藏它从Json响应。所以,在这种情况下,我有两个问题:
这样泄露密码不好吗?它被打乱了,但我仍然不喜欢它在那里的事实。显然,我不会在实际应用程序中像这样使用var_dump,但是信息在那里的事实让我感到紧张。
如果是不好的,我该如何预防?我想要表格里的其他信息。所以,我可以重写我的查询,以返回除密码以外的所有内容,但是有更简单的方法来做到这一点吗?也许我错过了排除行在我的查询,而不是写每一行我想要的东西?
首先我建议您为每个数据库表创建一个模型。
接下来,如果你正在使用DB::table('user'),你没有使用指定$hidden的user模型。这样密码就不会被隐藏。
当你这样做的时候(例如):
$user = User::find(1); // Selects user with id of 1
return Response::json($user); // Gives JSON response
所有用户数据将显示为JSON,不包含指定的字段:
protected $hidden = ['password'];