WedX - журнал о программировании и компьютерных науках

Получение VerifyCsrfToken Попытка получить свойство не-объекта при добавлении промежуточного программного обеспечения

Я добавляю промежуточное ПО, которое проверяет наличие определенного права в базе данных

ПО промежуточного слоя

public function handle($request, Closure $next)
{
    $right = User_access_right::where('access_key','=','add')
        ->where('user_id','=',Auth::user()->id)
        ->first();

    if(count($right) == 1)
    {
        if($right->access_value == 1)
        {
            return $next($request);
        }
    }
    else
    {
        return redirect()->to('/home')->withErrors(['status' => 'You do not have privilege to do such task']);
    }
}

Теперь в контроллере я добавил некоторые методы.

public function __construct()
{
    $this->middleware('auth');
    $this->middleware('hasAddPrivilege', ['only'=>['CreateCategory', 'CreateSubCategory']]);
    }

И в VerifyCsrfToken.php я добавляю некоторые маршруты, чтобы не проверять токен

protected $except = [
    '/category/create',
    '/category/update',
    '/category/sub_create',
    '/category/move_category',
    '/item/create',
    '/item/update'
];

И мои маршруты

Route::group(['middleware' => 'auth', 'prefix' => '/category'],     function()
{
Route::get('/', 'CategoryController@Category');
Route::post('/create', 'CategoryController@CreateCategory');
Route::post('/update', 'CategoryController@UpdateCategory');
Route::post('/sub_create', 'CategoryController@CreateSubCategory');
Route::get('/other_category/{id}', 'CategoryController@getRestOfCategories');
Route::post('/move_category', 'CategoryController@MoveCategory');
Route::get('/getCategoryTree', 'CategoryController@getCategoryTree');
});

Но все же я получаю эту ошибку;

ErrorException в строке VerifyCsrfToken.php 156: попытка получить свойство не-объекта

02.06.2018

Ответы:


1

Ваше промежуточное ПО имеет логическую ветвь, которая вообще ничего не возвращает. Промежуточное ПО должно возвращать ответ, чтобы предыдущее промежуточное ПО могло что-то делать с ответом, если это необходимо. Они принимают запрос и возвращают ответ.

VerifyCsrfToken получает null в качестве ответа от вашего промежуточного программного обеспечения, потому что вообще ничего не было возвращено.

Также возможно, что следующее промежуточное ПО после этого не возвращает ответ правильно и возвращается обратно, что может вызвать ту же проблему.

if(count($right) == 1)
{
    if($right->access_value == 1)
    {
        return $next($request);
    }
    // what about when $right->access_value != 1 ?
}
02.06.2018
  • OMG!... Я занимаюсь Laravel уже 2 года, и я не видел этого ляпа. Надо спать сейчас. 03.06.2018
  • мы все там были... поспи :) 03.06.2018
  • Здоровья, приятель. Очень признателен! 03.06.2018
  • Новые материалы

    Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что это выглядит сложно…
    Просто начните и учитесь самостоятельно Я хотел выучить язык программирования MVC4, но не мог выучить его раньше, потому что он кажется мне сложным, и я бросил его. Это в основном инструмент..

    Лицензии с открытым исходным кодом: руководство для разработчиков и создателей
    В динамичном мире разработки программного обеспечения открытый исходный код стал мощной парадигмой, способствующей сотрудничеству, инновациям и прогрессу, движимому сообществом. В основе..

    Объяснение документов 02: BERT
    BERT представил двухступенчатую структуру обучения: предварительное обучение и тонкая настройка. Во время предварительного обучения модель обучается на неразмеченных данных с помощью..

    Как проанализировать работу вашего классификатора?
    Не всегда просто знать, какие показатели использовать С развитием глубокого обучения все больше и больше людей учатся обучать свой первый классификатор. Но как только вы закончите..

    Работа с цепями Маркова, часть 4 (Машинное обучение)
    Нелинейные цепи Маркова с агрегатором и их приложения (arXiv) Автор : Бар Лайт Аннотация: Изучаются свойства подкласса случайных процессов, называемых дискретными нелинейными цепями Маркова..

    Crazy Laravel Livewire упростил мне создание электронной коммерции (панель администратора и API) [Часть 3]
    Как вы сегодня, ребята? В этой части мы создадим CRUD для данных о продукте. Думаю, в этой части я не буду слишком много делиться теорией, но чаще буду делиться своим кодом. Потому что..

    Использование машинного обучения и Python для классификации 1000 сезонов новичков MLB Hitter
    Чему может научиться машина, глядя на сезоны новичков 1000 игроков MLB? Это то, что исследует это приложение. В этом процессе мы будем использовать неконтролируемое обучение, чтобы..


    Для любых предложений по сайту: [email protected]