Получение Запрещено при попытке получить доступ к моему контроллеру - PullRequest
0 голосов
/ 27 марта 2019

Я создал форму, которая при отправке должна перейти к функции контроллера.

В момент отправки формы я продолжаю получать

Запрещено

У вас нет прав доступа к / client_area / shop / payment-gateway на этом сервере.

Кроме того, возникла ошибка 403 Forbidden при попытке использовать ErrorDocument для обработки запроса.

Я делал формы раньше, но это впервые, когда это случилось со мной, и это поставило меня в тупик.

моя форма

<div class="payment-form">
    <form action="{{ route('payment.gateway') }}" method="POST">
        @csrf

        <input type="hidden" name="return_url" value="{{ route('payment.success') }}">
        <input type="hidden" name="cancel_url" value="{{ route('payment.cancel') }}"> 
        <input type="hidden" name="m_payment_id" value="{{ $invoice_number }}">
        <input type="hidden" name="amount" class="completePrice" value="">
        <input type="hidden" name="item_name" value="Test Item">
        <input type="hidden" name="item_description" value="A test product">

        <input type="hidden" name="delivery_collection" class="delivery_collection" value="">
        <input type="hidden" name="delivery_fee" class="delivery_fee" value="{{ $delivery }}">
        <input type="hidden" name="delivery_address" class="delivery_address" value="{{ $address }}">

        <button type="submit" class="btn btn-success float-right confirm-order">
            Confirm Order
        </button>
    </form>
</div>

мои маршруты

Route::group(['middleware' => ['web', 'auth']], function(){
    Route::get('/account/dashboard', 'UsersController@accountDashboard')->name('account.dashboard');
    Route::get('/account/details', 'UsersController@personalDetails')->name('account.details');
    Route::get('/account/track-orders', 'UsersController@trackOrders')->name('account.track-orders');
    Route::get('/account/invoices', 'UsersController@invoices')->name('account.invoices');
    Route::get('/account/address', 'UsersController@addressesIndex')->name('account.addresses.index');
    Route::get('/account/sort-orders', 'UsersController@sortOrders')->name('account.sort-orders');
    Route::get('/account/order-details/{invoice_number}', 'UsersController@orderDetails')->name('account.order-details');
    Route::get('/account/invoice-pdf/{id}', 'UsersController@invoicesPdf')->name('account.invoices.pdf');
    Route::get('/account/create-address', 'UsersController@createAddress')->name('account.create.address');
    Route::get('/account/edit-address/{id}', 'UsersController@editAddress')->name('account.edit.address');
    Route::get('/delivery-confirmation', 'PublicController@deliveryConfirmation')->name('cart.deliveryConfirmation');
    Route::get('/account/edit-delivery-address/{id}', 'UsersController@editDeliveryAddress')->name('account.edit.delivery.address');
    Route::get('/payment-success', 'PublicController@successPayment')->name('payment.success');
    Route::get('/payment-cancel', 'PublicController@cancelPayment')->name('payment.cancel');

    Route::post('/account/personal-details', 'UsersController@postPersonalDetails')->name('post.personal-details');
    Route::post('/account/business-details', 'UsersController@postBusinessDetails')->name('post.business-details');
    Route::post('/account/addresses-radio/{id}', 'UsersController@postAddressesRadio')->name('account.post.addresses.radio');
    Route::post('/account/create-address', 'UsersController@postAddress')->name('account.post.address');
    Route::post('/account/edit-address/{id}', 'UsersController@updateAddress')->name('account.update.address');
    Route::post('/payment-gateway', 'PublicController@paymentGateway')->name('payment.gateway');

    Route::delete('/account/delete-delivery-address/{id}', 'UsersController@deleteDeliveryAddress')->name('account.delete.delivery.address');
});

Я только сделал dd(), чтобы убедиться, что нажал нужную функцию

public function paymentGateway()
{
    dd('this is a payment gateway');
}

My Auth Middleware

<?php

namespace App\Http\Middleware;

use Illuminate\Auth\Middleware\Authenticate as Middleware;

class Authenticate extends Middleware
{
    /**
     * Get the path the user should be redirected to when they are not authenticated.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return string
     */
    protected function redirectTo($request)
    {
        if (! $request->expectsJson()) {
            return route('login');
        }
    }
}

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

Изображение 1

Изображение 2

Изображение 3

Изображение 4

Изображение 5

Изображение 6

Изображение 7

Изображение 8

1 Ответ

0 голосов
/ 27 марта 2019

Laravel поставляется с защитой от подделки межсайтовых запросов.Вам также необходимо передать поле с именем csrf-token, как указано здесь в документации.https://laravel.com/docs/5.8/csrf#csrf-x-csrf-token

Если вы не хотите использовать эту защиту, вы должны включить маршрут в промежуточное ПО VerifyCsrfToken, чтобы исключить проверку.https://laravel.com/docs/5.8/csrf#csrf-excluding-uris

Попробуйте, чтобы увидеть, решит ли это вашу проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...