2010-12-10 17 views
0

我開始討論Rails &有幾個高級問題,通常圍繞用戶,他們的卷以及如何構建或佈局新的Rails應用程序。我真的只是尋找不同的想法(或對我未嘗試過的未受過教育的猜測進行驗證)和他們的利弊&缺點。Rails:使用會話,Cookies或命名空間劃分用戶,管理員等

一個新的項目將有用戶管理員和,讓我們給他們打電話,利益相關者

這些顯然都是人,每個人都需要登錄,並且會有不同的「滾動」。我知道有很多方法可以解決這個問題,但我正在尋找「Rails」方式來儘可能多地利用所謂的「Convention Over Configuration」。

  • 管理員擁有超能力,可以看到&去任何地方
  • 利益相關者只能更改自己的網站的區域
  • 用戶(也許有一個更好的名字,因爲所有角色在某種意義上, '用戶')只能查看由利益相關者創建的內容 ,並且 可以對其進行選擇性評論。

所以,如何處理好這個...

登錄:使用一個登錄表單,然後分配不同的卷?或發送用戶到一個登錄和管理員,到另一個等...?優點缺點?我想維護一個用戶類比分裂它們更容易......但安全性呢?

路線:

  • 爲了避免嵌套路由(其中許多建議反對),我想利益相關者只看到自己的「賭注」。所以當他們登錄時,他們會立即看到他們的小區域。想知道如果不是/ stakeholder/stakeholder_id /賭注/新的,也許我可能只是/賭注/新的。這是如何處理的?在用戶?在會議中?曲奇餅?

  • 那麼管理員呢?我見過這個卷的例子移動到它自己的「命名空間」(我認爲?)其中所有管理任務都預先添加/ admin/...這是常見的嗎?或者,還有更好的方法?

  • 而且,最後,在更高的卷(adminstakeholder)想「共享」的視圖或控制器,或任何爲此事代碼,由一個較小的卷(user)使用,會發生什麼?如果admin擁有自己的控制器,則admin/下的型號爲&,那麼使用/stake/new還是我們還需要維護/admin/stake/new

對不起,我的困惑&詳細。任何幫助,或例子/文件,將不勝感激...

+2

建議您在railscasts.com上搜索授權。一旦您查看了許多授權庫,就可以輕鬆解決一些基本問題。祝你好運。 – aceofspades 2010-12-10 20:58:17

+0

我知道授權是自行開發的還是** authlogic **或** devise **等等......我*不知道的是它們如何與應用程序本身的結構相關聯。現在,我還沒有*使用*一個,但是,當我閱讀每個人的文檔時,這可能會變得很清楚?或者可能是所有人使用的「標準」總體方法(Rails的方式),我想這就是我所問的... – Meltemi 2010-12-10 21:08:22

+0

與他們一起玩,就像全面的建議。一旦你做到了,它會變得更清晰。對於諸如利益相關者之類的東西,僅僅將查詢範圍限制在當前登錄的利益相關者中是很簡單的。即只需致電@ current_stakeholder.stakes.new等。 – Doon 2010-12-10 21:19:06

回答

0

有沒有「標準」的方式來處理紅寶石軌道上的認證和授權。通常我發現基於寶石的解決方案是最好的選擇。就我個人而言,我使用Devise和CanCan(在github上託管,谷歌搜索將把它變成)。請參閱上面的fullware建議的railscasts.com,以獲取有關實施的一些很好的示例。

要你的問題:

  • 慘慘處理授權(允許用戶做什麼),其中作爲制定(或authlogic)處理身份驗證。
  • 處理角色最簡單的方法是爲用戶表添加一個布爾列,以便爲每個要定義的角色添加一個布爾列,所以在上面的示例中,將爲管理員,用戶和利益相關者設置布爾值。當你創建你的用戶時,你需要自動將用戶字段設置爲true(這可以在用戶模型中使用before_save過濾器來完成)。然後,當您需要授予用戶權限時,只需將該角色設置爲true即可。
  • 一旦你有了這個設置,配置CanCan可以根據這些字段進行限制(請參閱CanCan文檔或railscasts.com瞭解如何執行此操作)。
  • 安全性:你提到分裂管理和用戶功能和登錄。對於Web開發人員來說,這是一個公開的爭論,有些人喜歡做內聯管理(添加選項只出現在「公共」視圖中),而其他人則更喜歡使用不同憑證的完全獨立的管理界面。答案真的取決於你的應用程序的需求。從安全角度來看,具有獨立管理界面和自己的證書並位於單獨的子域(即admin.yoursite.com)更安全,因爲XSS更困難(更多信息@指南上的安全指南-DOT-RubyOnRails- DOT-ORG)
  • RE:利益相關者「主頁」我不是100%清楚stakes是否是嵌套資源或其他東西。如果它是一個嵌套的資源,一個選項可能是使用:淺路由選項(請參見:http://ryandaigle.com/articles/2008/9/7/what-s-new-in-edge-rails-shallow-routes
  • 您最後一點是最棘手的,即時通訊不清楚您的意思是與用戶共享代碼,但答案可能是讓你的權限系統(管理員,利益相關者,用戶)更高級,並將權限鏈接到更多的操作上,比如創建或查看某些內容的權限。這將允許你細粒度的控制。有很多角色管理插件(嘗試谷歌這些)可能會爲您提供這個。

對不起,不發佈更多的鏈接,作爲一個新用戶,我不能張貼多個顯然。

希望這會有所幫助。