2017-12-14 3 views
1

Laravel 5.5에서 실행되는 웹 앱이 있으며 독점적으로 ajax를 사용하여 쇼핑 카트를 만들 필요가 있습니다 (이유가 있음).AJAX 사용자가 로그인하지 않은 경우 응답하지 않음 - Laravel

사용자가 로그인하면 모두 원활하게 실행됩니다. 사용자가 로그인하지 않으면 빈 응답이 표시됩니다.

경로 :

<?php 

    class ShopController extends Controller 
    { 

     public static function addToCart(){ 

     $message = "Some message"; 

     return response()->json(["message"=>$message]); 
     } 
    } 
?> 

JQuery와는 다음과 같습니다 :

Route::post('/shop/add2', '[email protected]')->name('add2cart'); 

ShopController이 같이 보입니다

var token = $('[name="_token"]').val(); 
var var1 = $(this).data('itemcom'); 
var var2_ = $(this).data('itemvalue'); 
$.ajax({ 
     url: '/shop/add2', 
     type: 'POST', 
     data: {_token: token, identX:var2_, identY:var1 }, 
     dataType: 'JSON', 
     success: function(response) { 
     console.log(JSON.stringify(response)); 
     }, 
     error : function(errors){ 
     console.log(JSON.stringi(errors)); 
     } 
}); 

나는 내가 할 수있는 모든 노력을하고 나는 419 상태 코드를 얻을. 알아, 그렇지?

답변

0

흠, 나는 코드 강한 devaju이 419 ... 좋은 사람은 아니야. 페이스 북의 webhook 경로에 Csrf 토큰이 없어서 반나절처럼 디버깅해야했습니다. 아마도 이것은 당신의 경우에서 비슷합니까?

class VerifyCsrfToken extends Middleware 
{ 
    const FACEBOOK_ROUTE = 'facebook_hook'; 

    /** 
    * The URIs that should be excluded from CSRF verification. 
    * 
    * @var array 
    */ 
    protected $except = [ 
     self::FACEBOOK_ROUTE, 
     self::FACEBOOK_ROUTE . '/*', 
     'upload', 
     'upload/*', 
    ]; 

제 3 자 ajax 플러그인에서도 마찬가지입니다. 업로드하는 경우에도 마찬가지입니다.

건배

+1

그게 내가 발견 한거야. 나는 아래의 의견에 대답했다. https://laravel-news.com/excluding-routes-from-the-csrf-middleware – codiiv

1

이 기능 모두에 액세스 할 수 있다고 생각하지 않는 경우, 당신은 컨트롤러의 생성자에서 미들웨어에 예외를 추가 할 수 있습니다

public function __construct() 
{ 
    $this->middleware('auth', ['except' => ['addToCart']]); 
} 
+0

감사합니다. 어떤 이유로 나를 위해 작동하지 않았다, 좀 더 파고 날 https://laravel-news.com/excluding-routes-from-the-csrf-middleware로 데려왔다 그리고 그 일을 내가 App \ Http \ MIdleware \ VerifyCsrToken.php 파일 grrrrr – codiiv

+0

좋습니다! 문제 없어! 나는 이것이 당신을 위해 일하기를 바랍니다! – Laerte