Laravel перенаправляет на вход после входа с Ajax - PullRequest
0 голосов
/ 19 декабря 2018

Когда я вхожу в laravel с помощью ajax, я получаю ответ об успешном завершении, и после этого я делаю запрос на получение из раздела об успешном завершении, вызывая метод для получения данных о некоторых магазинах, затем он перенаправляется на страницу входа (например, если яне вошел в систему) В почтальоне это работает отлично даже в том случае, если мои маршруты находятся внутри или за пределами промежуточного программного обеспечения аутентификации (я использую внешний одиночный html-файл вместо представлений laravel) Вот мой код: 1 - web.php

Auth::routes();
Route::group(['middleware' => 'auth:web'], function () {

  Route::get( 'shops/likedshops/', 'ShopUserController@liked_shopes' );

  Route::resource( 'shops', 'ShopController', [
    'except' => [
        'create',
        'store',
        'edit',
        'update',
        'destroy'
    ]
  ] );

  Route::resource( 'shopusers', 'ShopUserController', [
    'except' => [
        'create',
        'show',
        'edit',
    ]
  ]);
 });

2: ShopUserController.php

<?php
 namespace App\Http\Controllers;
 use App\Jobs\DeleteDislikedShop;
 use Illuminate\Http\Request;
 use App\ShopUser;
 use App\User;
 use Auth;
 class ShopUserController extends Controller
 {
      // .... 
      public function liked_shopes(){
         $user_id = Auth::user()->id;
         $user = User::find($user_id);
         $shops = $user->shops()->where('is_liked', 1)->paginate(12);
         return response()->json(compact('shops'));
      }
  }

3: app.js для моего html-файла

$('.form-signin').on('submit',function (e){
    var email = $('#email-log').val()
    var password = $('#pass-log').val()       
    e.preventDefault(); 
    login(email, password); // <--------- Login
    return false;
});

function login(email, password) {
    $.ajax({
        method: 'POST',
        url: 'http://127.0.0.1:8000/login',
        data: {'email': email, 'password': password},
        success: function(response){
            localStorage.setItem('token', response.success.token);
            preferred_shops();  // <--------- Login
        },
        error: function(jqXHR, textStatus, errorThrown) { 
            alert('Email and/or Password Incorrect');
            console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
        }
    });
}
function preferred_shops(page_number = 1) {
    $('#preferred-shops').remove();
    $('#nearby-shops').remove();
    $.ajax({
        method: 'GET', 
        url: 'http://127.0.0.1:8000/shops/likedshops',
        data: {'page' : page_number},
        headers: {"Authorization": localStorage.getItem('token')}, // This isn't helping
        success: function(response){
            var data = response.shops.data;
        },
        error: function(jqXHR, textStatus, errorThrown) { 
            console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
        }
}

1 Ответ

0 голосов
/ 19 декабря 2018

Не похоже, что вы отправляете токен CSRF, смотрите документацию ниже, чтобы узнать, как реализовать это с помощью запроса AJAX:

X-CSRF-TOKEN

...