我正在开发一个应用程序,该应用程序向用户分配了项目,他可以在他的网站上看到该项目。单击给定项目后,将其移至该项目的页面,其中的URL看起来像./project/22-22是该项目的ID。问题是,进入搜索引擎(例如/ project / 22)的另一个用户可以看到该项目,即使未为其分配该项目。我还有一个数据透视表,用于存储项目ID和用户ID。这是我显示项目的代码: 控制器:
public function projects($id)
{
$project = Project::findOrFail($id);
return view('pages.project')->with('project', $project);
}
项目模型:
public function users()
{
return $this->belongsToMany('App\User')->withTimestamps();
}
用户模型:
public function projects()
{
return $this->belongsToMany('App\Project')->withTimestamps();
}
web.php:
Route::get('/projects/{id}', 'PagesController@projects');
答案 0 :(得分:0)
在控制器顶部尝试以下操作:
$project = Project::findOrFail($id);
if (!$project->users->where('id', Auth::user()->id)->first()) {
App::abort(403, 'You cannot view this project.');
}