403 안정된 컨트롤러 내에서 안정되지 않은 작업에 대한 AJAX 호출을 수행 할 때 금지됨

Marcamillion

나는이 Profile내가 AJAX를 통해 갱신에 노력하고 있음을 모델.

이것은 내 routes.rb:

  resources :profiles do
    member do
      patch :speed_rating
      patch :dribbling_rating
      patch :passing_rating
      patch :tackling_rating
    end
  end

다음 경로를 생성합니다.

speed_rating_profile_path   PATCH   /profiles/:id/speed_rating(.:format)    
profiles#speed_rating

dribbling_rating_profile_path   PATCH   /profiles/:id/dribbling_rating(.:format)    
profiles#dribbling_rating

passing_rating_profile_path PATCH   /profiles/:id/passing_rating(.:format)  
profiles#passing_rating

tackling_rating_profile_path    PATCH   /profiles/:id/tackling_rating(.:format) 
profiles#tackling_rating

이것은 내 ProfilesController:

class ProfilesController < ApplicationController
  before_action :set_profile, only: [:show, :edit, :update, :destroy, :invite_user, :speed_rating, :tackling_rating, :dribbling_rating, :passing_rating]
  authorize_resource except: [:dashboard]
  skip_authorization_check only: :dashboard

  def speed_rating
    binding.pry
  end

  def dribbling_rating
    binding.pry
  end

  def passing_rating
    binding.pry
  end

  def tackling_rating
    binding.pry
  end

  private
    def set_profile
      @profile = Profile.friendly.find(params[:id])
    end

    def profile_params
      params.require(:profile).permit(:id, :first_name, :last_name, :dob, :height, :weight, :bib_color, videos_attributes: [:id, :url, :video, :vimeo_url, :vimeo_embed_code, :official, :video_cache, :remove_video, :_destroy], transcripts_attributes: [:id, :url, :name, :transcript, :remove_transcript, :url_cache, :_destroy])
    end

profile.js에서 다음을 수행합니다.

  var url = "/profiles/" + _profile_id + "/" + _rating_type + "_rating/?" + _rating_type + "=" + button.innerText

  $.ajax({
    type: "PATCH",
    url: url,
    success: function(result){
      console.log(_profile_id + "'s " + _rating_type + " was successfully updated.");
      console.log(result);
    },
    error: function(result){
      console.log(_profile_id + "'s " + _rating_type + " was successfully updated.");
      console.log(result);
    }
  })

이것은 내가 얻는 오류입니다.

jquery.self-bd7ddd3….js?body=1:10255 PATCH http://localhost:3000/profiles/rebecca-nitzsche-st-george-s-college/dribbling_rating/?dribbling=6 403 (Forbidden)

편집 1

승인을 위해 CanCanCan을 사용하고 있습니다.

내가 시도한 한 가지는 특히 다음과 같이 권한 부여 예외 목록에 새 작업을 추가했습니다.

authorize_resource except: [:dashboard, :speed_rating, :dribbling_rating, :tackling_rating, :passing_rating]

지금까지는 작동하는 것 같습니다. 하지만 이로 인해 내 앱이 안전하지 않습니까?

사용자가 이러한 경로를 발견 한 경우 오용 할 수 없도록 올바른 권한 범위 내에서이 작업을 수행하려면 어떻게해야합니까?

ArtOfCode

이 줄을 가정하겠습니다.

authorize_resource except: [:dashboard]

사용자 세부 정보가 필요할 수있는 일종의 인증 또는 권한 부여를 수행하고 있습니다. AJAX 요청에서 사용자 이름, 비밀번호 또는 세션 쿠키에 대한 조항을 볼 수 없습니다. 요청이 성공적으로 승인 될 수 있도록 AJAX 요청과 함께 세션 쿠키를 전송하고 있는지 확인해야합니다.

xhrFields에 대한 호출에 개체를 포함하여이 작업을 수행 할 수 있습니다 $.ajax.

$.ajax({
    'type': 'PATCH',
    'url': 'whatever',
    'xhrFields': {
        'withCredentials': true
    }
    // whatever other AJAX options you need
});

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

다른 컨트롤러에서 호출 할 때 nil : NilClass에 대한 정의되지 않은 메소드`each '

분류에서Dev

잡히지 않은 SyntaxError : 컨트롤러에 ajax 호출을 할 때

분류에서Dev

컨트롤러 메서드를 호출하는 동안 nil : NilClass에 대한 정의되지 않은 메서드

분류에서Dev

403 Ajax 요청에서 CodeIgniter 컨트롤러에 대한 액세스 금지

분류에서Dev

컨트롤러를 테스트 할 때 모델에 대한 초기화되지 않은 상수

분류에서Dev

컨트롤러없이 디렉터리를 탐색 할 때 MVC 응용 프로그램에서 403 금지됨

분류에서Dev

Laravel 컨트롤러를 테스트 할 때보기에 정의되지 않은 변수

분류에서Dev

Ajax에서 MVC 컨트롤러로 보낸 정의되지 않은 변수

분류에서Dev

cronjob을 사용하여 컨트롤러 작업을 호출 할 때. "정의되지 않은 함수 mysqli_init () 호출"과 같은 치명적인 오류가 발생합니다.

분류에서Dev

Laravel에서 지정된 컨트롤러 작업에 대한 필터를 수행하는 방법

분류에서Dev

Laravel 작업 일정 명령을 실행할 때 정의되지 않은 메서드 Illuminate \ Database \ Eloquent \ Builder :: save () 호출

분류에서Dev

YII2에서 액세스 할 수없는 경우 금지됨 (# 403)에 대한 기본 페이지 설정

분류에서Dev

ajax 호출이 작동하지 않은 후 컨트롤러 작업에서 Yii 리디렉션

분류에서Dev

C # 작업 대기자에서`OnCompleted ()`를 호출 할 때 OnCompleted 호출 내부에 지정된 새 작업을 어떻게 기다리나요?

분류에서Dev

fxml 내에서 fxml을 구성 요소로 사용할 때 JavaFX FXML에서 "컨트롤러가 루트 구성 요소에 정의되지 않았습니다"라는 컨트롤러 메서드가 올바르게 표시되지 않습니다.

분류에서Dev

컨트롤러는 공장에서 함수 호출시 정의되지 않음을 수신합니다.

분류에서Dev

컨트롤러에서 정의되지 않은 범위 변수

분류에서Dev

objc_setAssociatedObject로 작업 할 때 armv7 아키텍처에 대한 정의되지 않은 기호

분류에서Dev

예약 된 작업에서 PHP를 실행할 때 정의되지 않은 $ _SCRIPT 변수

분류에서Dev

403-금지됨 : Yii에서보기 파일을 호출 할 때 오류 발생

분류에서Dev

컨트롤러 뒤에서 코드를 실행하지 않는 Ajax 호출

분류에서Dev

서버에 HTML 마크 업을 보내려고 할 때 Ajax 호출이 작동하지 않음

분류에서Dev

컨트롤러 내에서 정의되지 않은 $ scope

분류에서Dev

컨트롤러 내에서 정의되지 않은 $ scope

분류에서Dev

지시어 템플릿에서 컨트롤러로 전달 될 때 정의되지 않은 ng-repeat 변수

분류에서Dev

클래스 내에서 정의되지 않은 함수에 대한 PHP 호출

분류에서Dev

C ++에서 Hough 변환을 호출 할 때 OpenCV 지정되지 않은 오류

분류에서Dev

함수 내부에서 호출 할 때 ajax가 제대로 작동하지 않습니다.

분류에서Dev

길이가 지정되지 않은 지연된 객체는 함수에서 여러 출력을 사용할 때 반복 가능한 오류가 아닙니다.

Related 관련 기사

  1. 1

    다른 컨트롤러에서 호출 할 때 nil : NilClass에 대한 정의되지 않은 메소드`each '

  2. 2

    잡히지 않은 SyntaxError : 컨트롤러에 ajax 호출을 할 때

  3. 3

    컨트롤러 메서드를 호출하는 동안 nil : NilClass에 대한 정의되지 않은 메서드

  4. 4

    403 Ajax 요청에서 CodeIgniter 컨트롤러에 대한 액세스 금지

  5. 5

    컨트롤러를 테스트 할 때 모델에 대한 초기화되지 않은 상수

  6. 6

    컨트롤러없이 디렉터리를 탐색 할 때 MVC 응용 프로그램에서 403 금지됨

  7. 7

    Laravel 컨트롤러를 테스트 할 때보기에 정의되지 않은 변수

  8. 8

    Ajax에서 MVC 컨트롤러로 보낸 정의되지 않은 변수

  9. 9

    cronjob을 사용하여 컨트롤러 작업을 호출 할 때. "정의되지 않은 함수 mysqli_init () 호출"과 같은 치명적인 오류가 발생합니다.

  10. 10

    Laravel에서 지정된 컨트롤러 작업에 대한 필터를 수행하는 방법

  11. 11

    Laravel 작업 일정 명령을 실행할 때 정의되지 않은 메서드 Illuminate \ Database \ Eloquent \ Builder :: save () 호출

  12. 12

    YII2에서 액세스 할 수없는 경우 금지됨 (# 403)에 대한 기본 페이지 설정

  13. 13

    ajax 호출이 작동하지 않은 후 컨트롤러 작업에서 Yii 리디렉션

  14. 14

    C # 작업 대기자에서`OnCompleted ()`를 호출 할 때 OnCompleted 호출 내부에 지정된 새 작업을 어떻게 기다리나요?

  15. 15

    fxml 내에서 fxml을 구성 요소로 사용할 때 JavaFX FXML에서 "컨트롤러가 루트 구성 요소에 정의되지 않았습니다"라는 컨트롤러 메서드가 올바르게 표시되지 않습니다.

  16. 16

    컨트롤러는 공장에서 함수 호출시 정의되지 않음을 수신합니다.

  17. 17

    컨트롤러에서 정의되지 않은 범위 변수

  18. 18

    objc_setAssociatedObject로 작업 할 때 armv7 아키텍처에 대한 정의되지 않은 기호

  19. 19

    예약 된 작업에서 PHP를 실행할 때 정의되지 않은 $ _SCRIPT 변수

  20. 20

    403-금지됨 : Yii에서보기 파일을 호출 할 때 오류 발생

  21. 21

    컨트롤러 뒤에서 코드를 실행하지 않는 Ajax 호출

  22. 22

    서버에 HTML 마크 업을 보내려고 할 때 Ajax 호출이 작동하지 않음

  23. 23

    컨트롤러 내에서 정의되지 않은 $ scope

  24. 24

    컨트롤러 내에서 정의되지 않은 $ scope

  25. 25

    지시어 템플릿에서 컨트롤러로 전달 될 때 정의되지 않은 ng-repeat 변수

  26. 26

    클래스 내에서 정의되지 않은 함수에 대한 PHP 호출

  27. 27

    C ++에서 Hough 변환을 호출 할 때 OpenCV 지정되지 않은 오류

  28. 28

    함수 내부에서 호출 할 때 ajax가 제대로 작동하지 않습니다.

  29. 29

    길이가 지정되지 않은 지연된 객체는 함수에서 여러 출력을 사용할 때 반복 가능한 오류가 아닙니다.

뜨겁다태그

보관