#php #laravel #laravel-8 #laravel-middleware
#php #laravel #laravel-8 #laravel-промежуточное программное обеспечение
Вопрос:
При доступе к моему маршруту из запроса Ajax я всегда получаю ошибку 403. Он даже не входит в функцию политики.
Route::group(['middleware' => 'auth'], function () {
Route::group(['middleware' => 'can:owns,mymodel'], function () {
Route::get('myroute/{mymodel}/get', 'MyController@get')
->name('mymodel.get');
});
});
Если вместо того, чтобы присоединять промежуточное программное обеспечение в моем web.php (маршрут) как и в приведенном выше файле, я делаю это из своей функции контроллера следующим образом:
public function get(MyModel $model)
{
$this->authorizeForUser(auth()->user(), 'owns', $model);
// ...
}
Тогда авторизация работает так, как ожидалось. Я почти уверен, что мне чего-то не хватает в том, как работает Gate против промежуточного программного обеспечения, но тот же маршрут работает нормально, если не запрашивается в Ajax.
Комментарии:
1. ваш параметр в сигнатуре вашего метода должен иметь то же имя, что и ваш параметр маршрута …..
MyModel $mymodel
, предполагая, что вы хотите использовать привязку модели маршрута здесь2. @lagbox Вы правы! Спасибо, это работает.