我已经问过这种情况,但是当您将数据直接传递给视图时,如下所示:
您获得$user = Auth::user();
的用户,然后使用return view ('somepage')->with('user',$user);
将其发送到视图,浏览器将获取视图中的所有用户数据(uername,password,user_id等..)。
并发现它应该是安全的。现在我在想如果你把它传递给负责更新视图的脚本呢?
像这样:
return Response()->json($user);
你正在疯狂地发射一个json,它以data
的形式进入脚本,那么第三方也可以访问那个json数据吗?
答案 0 :(得分:0)
不,您不希望将任何敏感数据传递给脚本或通过JSON。这两种资源都可以从客户端查看。
但是,您可以在将对象序列化为JSON并传递给浏览器之前从对象中删除敏感数据。
在您的Eloquent模型中,添加$hidden
属性 - 此属性是一个属性数组,在将模型序列化为JSON时将删除这些属性。
因此,您的User
模型将如下所示:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that should be hidden for arrays.
*
* @var array
*/
protected $hidden = ['password'];
}
然后,password
将被删除,无法从客户端访问。
文档:https://laravel.com/docs/5.2/eloquent-serialization#hiding-attributes-from-json