Pet*_*icz 1 php mysql laravel laravel-4
我正在使用 laravel 4 开发应用程序。我正在对两个表执行以下连接:
$listings = DB::table('user')
->join('listings', 'listings.agent_id', '=', 'user.id')
->where('user.user_level', '=', 3)
->get();
var_dump($listings);
Run Code Online (Sandbox Code Playgroud)
这不是按预期工作,但在 var_dump 中它返回散列密码,我不希望它这样做。
public 'password' => string '$2y$10$o58S16Tw2yc2uvcIs.cy3.lbmyFgUZjTl7nMdLzU2AVXeXVCY5xqK' (length=60)
Run Code Online (Sandbox Code Playgroud)
我的用户模型中有:
protected $hidden = array('password');
Run Code Online (Sandbox Code Playgroud)
但是,我认为这只会将它从 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
Run Code Online (Sandbox Code Playgroud)
所有用户数据都将显示为 JSON,没有指定的字段:
protected $hidden = ['password'];
Run Code Online (Sandbox Code Playgroud)
我希望这可以帮助你 ;)