2015-01-18 3 views
2

laravel을 사용하여 좋아요/싫어함 기능을 구현 중입니다. 비동기 요청을 제외하고 나는 모든 것을 준비했다. 나는 단지 사용자가 항목을 좋아하거나 싫어할 수 있기를 원했기 때문에 요청은 서버 쪽에서 확인되어야한다. 또한 비동기식 요청이므로 페이지를 새로 고침 할 필요가 없습니다.laravel과 비동기 등급 (싫어함)

이 작업을 수행하는 좋은 방법은 무엇입니까? 나는 jquery가 이미로드되어 있으므로 약간의 잔인 함이있는 각도 JUST를 사용해야합니다. 요청을 어떻게 보호합니까? 나는 토큰에 관한 것들을 읽었지 만 그것에 대해서는 확실히 모른다.

+0

나는 laravel를 사용하지 않은? – Ozan

+0

보안이 나를 멈추고 있습니다. 나는 사람들이 데이터베이스에 대해 수천 가지의 요청을 만들어서 좋아하는 것을 끌어 올리는 것을 원하지 않는다. 그래서'루트'를 지킬 수있는 방법이 필요합니다. 아약스 요청 중에 헤더에 CSRF 토큰을 보내는 것에 대해 읽고있다. 나는 다른 사람들이 이것에 대해 그리고 내가 지금 읽고있는 방법이 좋은 접근인지에 대해 무엇을 말해야하는지 궁금하다. – Ortix92

답변

1

이 작업을 수행하는 가장 좋은 방법은 config.php 파일에 csrf 필터를 추가하는 것입니다. Laravel은 기본적으로 csrf 값을 생성해야하지만 그렇지 않은 경우 블레이드를 사용하여 다음과 같은 방법으로 사용할 수 있습니다.

{{ csrf_token() }} 

아약스는 아래와 같이 보일 수 있습니다. csrf 토큰은 헤더 태그에도있을 수 있지만 여기서는 코드가 작동하는 방식으로 작성했음을 유의하십시오. 나는 두 그래서 아래의 다음 필터를 생성 수선 문제가 있었기 때문에이에 설정 필터를 변경했다, 그래서 내 마지막 프로젝트에

나를 위해
$.ajax({ 
      type: "POST", 
      beforeSend: function(request) { 
       return request.setRequestHeader('X-CSRF-Token',"{{ csrf_token() }}"); 
      }, 
      url: baseLocalUrl, //this would be your path to your route 
      data: 
      { 
       html: sendHTML //data separated by a comma 
      }, 
      success: function(data){ 
       alert("Success"); 
       }, 
       error: function(xhr, textStatus, thrownError) { 
       alert('Failed'); 
       } 


}); 

, 나는 형태의 무리와 CSRF 일부 아약스 있습니다. 그래서 나는 완전히 확실하지 오전하지만 비동기 아약스 요청을에서 당신을 중지하고 무언가가되기 전에 자세한 내용과

Route::filter('csrf', function() 
{ 
    $token = Request::ajax() ? Request::header('x-csrf-token') : (Input::get('csrf_token') ?: Input::get('_token')); 
    $test1 = Session::getToken() != Input::get('csrf_token') && Session::getToken() != Input::get('_token'); 
    $test2 = Session::token() != $token; 

    if($test2 && $test1){ 

     throw new Illuminate\Session\TokenMismatchException; 
    } 
}); 

Reference

관련 문제