laravel-admin列表中使用了 where 条件可以查询出用户只属于自己的数据,但是在编辑数据时,尝试通过修改链接中的 ID 果然可以跳转到别人的数据,这样安全隐患十分大,所以写了一个简单验证用户登录后 laravel-admin用户只操作自己的数据 。
form()方法中添加代码
//编辑页面
if($form->isEditing()){
//获取当前编辑数据ID
$id = request()->route()->parameters()['test'];
//获取该数据创建者用户名
$username=\DB::table('Tests')->where('id',$id)->value('username');
//非超管、管理员以及创建者禁止访问
if(!Admin::user()->isAdministrator()&&!Admin::user()->can('admin.management')&&$username!=Admin::user()->username){
abort(403, '非法访问');
}
}