0

계산 한 사용자 이름으로 devise를 사용하여 로그인을 만들려고합니다. 예를 들어 사용자 이름의 네임 스페이스를 지정하고 로그인 양식에서 사용자 이름을 받고 namespaced_username을 사용하여 실제 인증을 수행한다고 가정합니다. 내 User::SessionsController#create에 따라서계산/조작 된 사용자 이름 매개 변수로 로그인하십시오.

, 나는이있을 수 있습니다

유증이 namespaced_username 청취 (중 초기화 또는 모델 자체에 authentication_keys로 구성) 및 사용자 설정에 namespace/username로 여전히 I하더라도
def create 
    params[:user][:namespaced_username] = "namespace/#{params[:user][:mobile_number]}" 
    super 
end 

get told Invalid Namespaced username or password is not valid

새로운 매개 변수를 읽으려면 어떻게해야합니까 (특히 관리자 전략)?

답변

0

레일 5 문제입니다. 기본적으로 Warden (devise에 의해 사용되는)은 미들웨어에있는 요청 객체를 건네고 컨트롤러에 요청의 params 해시 복사본이 전달됩니다.

def create 
    # Here we change params - but this won't be seen by the warden strategy 
    params[:user][:namespaced_username] = = "namespace/#{params[:user][:mobile_number]}" 
    # Inject our changes into the copy in request 
    request.params[:user].merge!(params[:user]) 
    # now our changes will be seen by warden - continue with devise: 
    super 
end 
:

그것이 해결하는 가장 쉬운 방법은, User::SessionsController#create 내에서, 우리는 줄을 추가 할 필요가