2017-10-13 8 views
0

레일 5에 Ajax 로그인/등록과 함께 Devise가 있으며이 두 가지 작업에 대한 GET 요청을 제거하려고합니다. 기본 sign_in/sign_up 라우트가 변경됩니다.Devise 경로, 레일 5에 대해 GET 사용 안 함 5

devise_for :users, :path => '', :path_names => { :sign_in => "login", 
         :sign_out => "logout", :sign_up => "registration" }, 
         :controllers => {:sessions => 'sessions', 
             :registrations => 'registrations' 

답변

1
sessions_controller.rb에서

registrations_controller.rb 그것이 GET 요청의 경우 요청 유형을 확인하고 404을 반환 할 수 있습니다 : 당신이하지 이미 유증 컨트롤러를 원숭이가 패치가있는 경우

의를 만들 이건 내 routes.rb입니다 디렉토리 app/controllers/devise과 그것에 파일 registrations_controller.rb을 추가

class Devise::RegistrationsController < DeviseController 
    prepend_before_action: :check_get_request # you can limit it to certain actions with only: [:new, etc.] 

    private 
    def check_get_request 
    if request.get? 
     # respond with 404 or 422, or whatever 
    else 
     super 
    end 
    end 
end 

동일은 sessions_controller 간다. 당신은 모든 GET 요청을 사용하지 않도록 설정하여 뭔가를 깰 수도 있지만, 필요하다면 당신은 특정 작업을 타겟팅 할 수 있습니다 : 참고 : https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb 과 : https://github.com/plataformatec/devise/blob/master/app/controllers/devise/sessions_controller.rb

0

난 그냥 등록을 보여주는 메소드를 오버라이드 (override) 사용자 정의 registration_controllersessions_controller을 사용하고 있기 때문에/로그인 페이지. 두 방법 모두 show입니다. 두 사용자 지정 컨트롤러에이 메서드를 추가합니다.

def new 
    raise ActionController::RoutingError.new('Not Found') 
end 

누군가가 등록 또는 로그인 URL로 이동하지만 POST 요청이 정상적으로 작동하면 404를 반환합니다.