Я следую за ларакастами Джеффри Уэя с нуля, и он упоминает о регистрации ProjectPolicy.php в AuthServiceProvider.php.Тем не менее, я попытался обновить свою страницу авторизации, чтобы проверить другую учетную запись без этого, и она все еще работает.
Это странный вопрос, потому что я думаю, что я трачу время на что-то, что работает, и я не долженбеспокоюсь оНиже приведен фрагмент кода.
Я попытался прокомментировать довольно много LoC, которые, как я думал, могли бы быть использованы платформой для авторизации страниц-
ProjectsController.php
public function __construct(){
// $this->middleware('auth');
}
неотредактированная версия для вопроса, здесь.
Метод show () в ProjectsController.php
public function show(Project $project, Twitter $twitter)
{
// $twitter = app('twitter');
// dd($twitter);
// abort_if($project->owner_id !== auth()->id(),403);
//abort_unless();
$this->authorize('view',$project);
return view('project.show',compact('project'));
}
ProjectPolicy.php
public function view(User $user, Project $project)
{
return $project->owner_id == $user->id;//works even if I remove this
}// works even if I remove the complete method.
ProjectsController.php
public function show(Project $project, Twitter $twitter)//edited
{
$this->authorize('view',$project);//the authorization is enabled just by this loc.
return view('project.show',compact('project'));
}
Я так растерялся, чтокак это все еще работает.
Как фреймворк набирает authorize('view',$project);
, даже когда я удаляю метод view ()?
Редактировать: Нашел это на странице документации.
Вместо ручной регистрации политик моделей Laravel может автоматически обнаруживать политики, если модель и политика соответствуют стандартным соглашениям об именах Laravel.В частности, политики должны находиться в каталоге Policies под каталогом, содержащим модели.Так, например, модели могут быть размещены в каталоге приложения, в то время как политики могут быть размещены в каталоге приложения / Политики.Кроме того, имя политики должно совпадать с именем модели и иметь суффикс политики.Таким образом, модель User будет соответствовать классу UserPolicy.