[Rails5] twitter 인증을 도입하면 이메일을 사용한 등록을 할 수 없게 된 건
2802 단어 DBRailsOAuthTwitterAPIOmniAuthd
email
email은 이미 존재하고 있다.
로그를 보면 Unpermitted parameter: email이 있다.
DB를 봐도 emai 데이터는 들어 있지 않다. twiiter 인증의 분은, email 데이터가 들어가 있다.
스트롱 파라미터에 email을 넣지 않아도 좋다고 생각하지만
application_controller.rbclass ApplicationController < ActionController::Base
# CSRFへのセキュリティ対策
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
# 省略
protected
#
#パラメーターname,emailを渡せるようにする
#
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email])
devise_parameter_sanitizer.permit(:account_update, keys: [:name, :email])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name, :email])
end
end
와 email를 추가하는 것으로 해결.
uid
twitter등록이 아니라 보통의 등록이기 때문에 uid데이터는 필요없는데, 이 uid는 벌써 존재하고 있다.
models/user.rb#validates :uid, uniqueness: true
그리고 밸리데이션을 코멘트 아웃으로 제외하면 에러는 잡혔다.
Reference
이 문제에 관하여([Rails5] twitter 인증을 도입하면 이메일을 사용한 등록을 할 수 없게 된 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/k-kou5/items/f659776f67520c83de42
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
class ApplicationController < ActionController::Base
# CSRFへのセキュリティ対策
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
# 省略
protected
#
#パラメーターname,emailを渡せるようにする
#
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :email])
devise_parameter_sanitizer.permit(:account_update, keys: [:name, :email])
devise_parameter_sanitizer.permit(:sign_in, keys: [:name, :email])
end
end
twitter등록이 아니라 보통의 등록이기 때문에 uid데이터는 필요없는데, 이 uid는 벌써 존재하고 있다.
models/user.rb
#validates :uid, uniqueness: true
그리고 밸리데이션을 코멘트 아웃으로 제외하면 에러는 잡혔다.
Reference
이 문제에 관하여([Rails5] twitter 인증을 도입하면 이메일을 사용한 등록을 할 수 없게 된 건), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/k-kou5/items/f659776f67520c83de42텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)