如何阻止Laravel 4返回密码?

时间:2014-06-28 19:29:55

标签: 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);

这不按预期工作,但在var_dump中它返回我不希望它做的散列密码。

public 'password' => string '$2y$10$o58S16Tw2yc2uvcIs.cy3.lbmyFgUZjTl7nMdLzU2AVXeXVCY5xqK' (length=60)

我的用户模型中有:

protected $hidden = array('password');

但是,我认为这只是从Json的回应中隐藏它。所以,在这种情况下,我有两个问题:

  1. 密码输出不是很糟糕吗?它正在回归,但我仍然不喜欢它在那里的事实。显然,我不会在实时应用程序中使用这样的var_dump,但是信息存在的事实让我很紧张。

  2. 如果不好,我该如何预防呢?我想要表格中的所有其他信息。所以,我可以重新编写我的查询以返回除密码之外的所有内容,但是有更简单的方法吗?也许我遗漏了一些在我的查询中排除行的东西,而不是写出我想要的每一行?

1 个答案:

答案 0 :(得分:4)

首先,我建议您为每个数据库表创建一个模型。

接下来,如果您使用的是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']; 

我希望这可以帮助你;)