Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Ajax登录后,Laravel正在重定向到登录_Ajax_Laravel_Authentication_Middleware - Fatal编程技术网

使用Ajax登录后,Laravel正在重定向到登录

使用Ajax登录后,Laravel正在重定向到登录,ajax,laravel,authentication,middleware,Ajax,Laravel,Authentication,Middleware,当我使用ajax登录laravel时,我得到了成功响应,然后我通过调用methode从成功部分发出一个get请求来获取一些商店数据,然后它重定向到登录页面(就像我没有登录一样) 在《邮递员》中,即使我的路线在auth中间件内部或外部,这也能完美地工作 (我使用的是外部单个html文件,而不是laravel视图) 下面是我的代码:1-web.php Auth::routes(); Route::group(['middleware' => 'auth:web'], function () {

当我使用ajax登录laravel时,我得到了成功响应,然后我通过调用methode从成功部分发出一个get请求来获取一些商店数据,然后它重定向到登录页面(就像我没有登录一样) 在《邮递员》中,即使我的路线在auth中间件内部或外部,这也能完美地工作 (我使用的是外部单个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'));
      }
  }

您似乎没有发送CSRF令牌,请参阅下面的文档,了解如何通过AJAX请求实现这一点:


仔细检查您的开发控制台,您的会话cookie是否已设置,然后随下一个请求一起发送?还要仔细检查cookie的域。如果您使用的是授权令牌,请确保该令牌与请求一起发送,或者删除一些dd()或echo语句以确保这些值通过。登录后,您需要从服务器获取新令牌
$('.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);
        }
}