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 或声明性授权)限制对子域的访问。理想情况下,应通过 cookie 在子域级别阻止访问。我相信这是一种更安全的方法,因为它不必再设置一个软件来控制对站点的访问。

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 回答