0

マルチサブドメイン アプリケーションで、管理者と単純なユーザーをログインさせたい。管理者は、すべてのサブドメインにアクセスできる必要があります (つまり、管理者のセッションは、すべてのサブドメインで利用可能な Cookie に保存する必要があります)。ユーザーは、ログインしたサブドメインにのみアクセスできる必要があります。

たとえば、次のようになります。

admin "administrator" は、ドメイン URL (mydomain.com) または任意のサブドメイン (abc.mydomain.com など) でサインインし、すべてのサブドメインにログインしたままになります。したがって、彼 (「管理者」) は、efg.mydomain.com、abc.mydomain.com、mydomain.com などにアクセスできます。

ユーザー「simpleuser」が abc.mydomain.com にサインインします。彼 (「simpleuser」) は、このサブドメインにのみアクセスできます (つまり、Cookie は abc.mydomain.com サブドメインにのみ関連します)。

サブドメインまたはドメインのいずれかに Cookie を関連付けることを選択できることはわかっていますが、同じアプリケーションでこの動作を混在させたいと考えています。誰かがアプローチを知っていますか?

これはRails 3用です

アプリケーションを介したサブドメインへのアクセスを制限したくありません (つまり、 cancan または declarative authorization を介して)。理想的には、Cookie を介してサブドメイン レベルでアクセスをブロックする必要があります。サイトへのアクセスを制御するためのソフトウェアをもう 1 つセットアップする必要がないため、これはより安全なアプローチだと思います。

4

1 に答える 1

0

すべてのサブドメインでCookieを有効にする必要がありますが、承認を使用して、サブドメインへのアクセスを許可するユーザーを制限します。

cancanのようなものがここで機能する可能性があります。管理者であればすべてにアクセスできますが、ユーザーはそのユーザーである場合にのみアクセスできます。

application_controllerで

before_filter :authorize_me

def authorize_me
  @user = User.find_by_subdomain(request.subdomain)
  authorize! :administer, @user
end

ability.rbクラスの能力にはCanCan::Abilityが含まれます

  def initialize(user)
    user ||= User.new

    can :manage, :all if user.admin?

    can :administer, User do |new_user|
      new_user.id == user.id
    end
  end
end
于 2011-01-07T13:39:53.527 に答える