Authlogic을 사용하여 Rails 앱의 인증을 수행하고 있습니다. 내 사용자는 클라이언트 모델의 일부로 저장된 하위 도메인에 로그인합니다. 사용자는 belongs_to 클라이언트이고 클라이언트는 authenticate_many UserSessions입니다. 로그인이 정상적으로 작동합니다. 내가 가지고있는 문제는 사용자가 해당 하위 도메인의 클라이언트에 속해 있는지 여부에 관계없이 모든 하위 도메인에 로그인 할 수 있다는 것입니다.사용자가 Authlogic을 사용하여 특정 모델에 속하게하려면 어떻게해야합니까?
응용 프로그램 컨트롤러 :
class ApplicationController < ActionController::Base
helper_method :current_user_session, :current_user, :current_client
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
def current_client
subdomain = request.subdomain
if subdomain.present? && subdomain != 'www'
@current_client = Client.find_by_subdomain(subdomain)
else
@current_client = nil
end
end
end
UserSessions 컨트롤러 :
class UserSessionsController < ApplicationController
def new
@user_session = current_client.user_sessions.new
end
def create
params[:user_session][:client] = current_client
@user_session = current_client.user_sessions.new(params[:user_session])
if @user_session.save
redirect_to dashboard_path
else
render :action => 'new'
end
end
end
클라이언트 모델 :
class Client < ActiveRecord::Base
authenticates_many :user_sessions, :find_options => { :limit => 1 }
has_many :users, :uniq => true
end
사용자 및 사용자 세션 모델 :
class User < ActiveRecord::Base
belongs_to :client
acts_as_authentic do |c|
c.validations_scope = :client_id
end
end
class UserSession < Authlogic::Session::Base
end
0 여기에 내 코드입니다
나는 Authlogic의 최신 버전이 설치된 Mac OS X에서 Rails 3를 실행 중입니다. 어떤 도움을 많이 주시면 감사하겠습니다!
감사합니다. 나는 그것이 이런 식으로되어야한다는 것을 알았다. – mjaz