0

我想在多子域應用程序中登錄管理員和簡單用戶。管理員應該可以訪問所有子域(即他們的會話應存儲在一個可供所有子域使用的cookie中)。用戶應該只給他們登錄的子域訪問是否有可能在具有cookie用戶會話的單個Rails應用程序中使用域或子域

因此,例如:

管理員在無論是在域名網址「管理員」的招牌(mydomain.com),或在任何子域(如abc.mydomain.com)並保持記錄在所有子域中。他( 「管理員」),因此可以訪問efg.mydomain.com,abc.mydomain.com,mydomain.com等等,等等

用戶在abc.mydomain.com 「simpleuser」 的跡象。他(「simpleuser」)只能訪問此子域(即該Cookie只涉及abc.mydomain.com子域)

我知道這是可能的選擇關聯到使用網站要麼子域或域,但我想在同一個應用程序中混合這種行爲。有誰知道一種方法?

這是爲Rails 3

我不想通過我的應用程序(即通過康康舞或聲明的授權),以限制訪問的子域。理想情況下,應該通過cookie在子域級別阻止訪問。我相信這是一種更安全的方法,因爲它不必再設置一個控制訪問網站的軟件。

回答

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 類能力 包括慘慘::能力

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 
+0

當然這是一個解決方案。但是,通過限制他們的cookies來將用戶嚴格限制在他們的子域名中是否會更安全?我寧願限制他們的訪問權限,因爲他們沒有對特定子域進行身份驗證,而不是授權他們使用康康。 – Dimitris 2011-01-07 13:51:39

相關問題