我试图阻止登录用户的ID与他尝试编辑的对象的路径不同的路线。
示例:
我负责管理分配给我的不同建筑物" user_id"在数据库中(在构建表中)。我是恶魔,我想改变我不介意的建筑物。通过获取URL,我可以去修改敌人的建筑。
我在模型Building
public function owner()
{
return $this->belongsTo(User::class, 'id', 'user_id');
}
和中间件
use App\Models\Building;
use Closure;
use Auth;
class CheckOwnItem
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ( Auth::id() != Building::class->user_id){
abort(403);
}
return $next($request);
}
}
当我想使用中间件' building'访问我的路线时,我有一个错误。我认为我无法正确访问建筑物的数据。怎么办?
Parse error: syntax error, unexpected '->' (T_OBJECT_OPERATOR)
谢谢!
答案 0 :(得分:1)
您需要检索建筑物实例,然后进行检查。
这样的事情可能是:
public function handle($request, Closure $next)
{
$building = Building::find($request->id);
if ( Auth::id() != $building->user_id){
abort(403);
}
return $next($request);
}