在 laravel 中发送 eloquent 来查看安全吗?

我刚开始学习使用 laravel 编程,当我不得不使用 foreach 打印出一些带有 id 的用户数据时,


喜欢


{{ $user->username }}

{{ $user->somedata1 }}

而其他部分看起来像


路线


Route::get('/some/{user}', 'SomeController@show');

控制器


public function show(User $user){


return view(some.show)->with('user' $user)

}

用户表


id

username

somedata1

somedata2

password

addr

birthday

...

我开始考虑这不会调用其表行中的每个数据然后从中打印出用户名吗?因此冒着某种安全问题的风险,比如暴露密码、地址等敏感数据?


如果是这样,我怎样才能隐藏特定的列不被调出?我必须从控制器手动准备数据吗?


添加:示例中的控制器是否返回其行中的所有内容?


慕桂英3389331
浏览 95回答 2
2回答

墨色风雨

如果您希望从检索到的数据中隐藏特定列,您应该$hidden为模型定义一个属性:class User extends Model{/** * The attributes that should be hidden for arrays. * * @var array */protected $hidden = ['password','address'];}

慕村9548890

首先,即使您将密码暴露给视图,假设您使用的是 Laravel 的身份验证脚手架,也无需担心,因为密码是通过bcrypt. 任何经过哈希处理的字符串都无法反转。其次,你可以利用select()Eloquent 的方法。您可以按如下方式执行此操作:Model::select('column_1','column_2')->where('column_1', 'value')->get();我认为这解决了你的问题。
打开App,查看更多内容
随时随地看视频慕课网APP