최근에 Rails를 살펴 보았는데 current_user. 이것은 Devise에서만 제공됩니까? Devise를 사용하더라도 수동으로 정의해야합니까? 사용하기위한 전제 조건이 있습니까 current_user(예 : 세션, 사용자 등)?
답변:
여러 보석으로 정의됩니다. 예 : Devise
일반적으로 로그인 후 세션의 어딘가에 user_id를 저장해야합니다. 또한 앱에 사용자, 인증 등이 있고 필요하다고 가정합니다.
일반적으로 다음과 같습니다.
class ApplicationController < ActionController::Base
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
end
이것은 User 클래스가 존재한다고 가정합니다 #{Rails.root}/app/models/user.rb.
업데이트 됨 : 현재 사용자가 없을 때 추가 데이터베이스 쿼리를 방지합니다.
sessionRails에 내장되어 있습니다. 기본적으로 쿠키를 사용하여 요청 사이에 클라이언트의 상태를 유지합니다. 자세한 내용은 guides.rubyonrails.org/security.html#sessions 를 참조하세요.
return unless session[:user_id]Zach의 답변에 표시된대로 포함해야합니다. 그렇지 않으면 로그 if current_user아웃하는 동안 모든 확인이 다른 데이터베이스 쿼리를 트리거합니다.
예, current_user사용합니다 session. 자체 인증을 롤링하려는 경우 애플리케이션 컨트롤러에서 유사한 작업을 수행 할 수 있습니다.
def current_user
return unless session[:user_id]
@current_user ||= User.find(session[:user_id])
end
sessionparams여러 요청에 대해 지속된다는 점을 제외하면 일종의 유사 합니다. 이를 사용하여 개별 사용자에게 고유 한 모든 종류의 영구 매개 변수를 저장할 수 있습니다 (세션이 만료되거나 로그 아웃 할 때까지). 여기에서 더 많은 것을 읽을 수 있습니다 : ActionController : Accessing the Session