我有一個用戶模型,設計管理 - 即所有用戶都有電子郵件 addy /用戶名/密碼等。如果用戶登錄,根據他們的權限,他們可以訪問 不同的東西。這工作正常。我可以在Rails 3中的不同模型上使用token_authenticable(來自Devise)嗎?
但我有一個客戶端模型,我想授予令牌,以便他們可以訪問一個特定控制器上的一個特定操作。
理想情況下,我想生成客戶端[email protected]
(記住,這不是一個User.email,但Client.email)令牌,使他們能夠爲我 stages
控制器,其中臺訪問compare
行動有一個ID爲7
。
我不希望他們能夠訪問除id7以外的任何其他階段,我不希望他們必須登錄。即,一旦他們訪問特定的URL(例如,myapp.com/stages/7/compare?token={unique token generated by devise}
)他們可以看到它。但他們無法拿到這個標記,例如去stages/8/compare
。
我有可能使用Devise做到這一點嗎?
如果是這樣,怎麼樣?
你說得對。我的'客戶端'模型不是由Devise管理的。但是你確定它不能用於其他模型嗎?正如我所說,這是我的第一個傾向,但有人告訴我,否則我無法讓他們給我更多的細節,設計文件還不足以教育我在這裏。 – marcamillion 2011-04-04 01:54:35
我以前錯了,但這聽起來不對。如果Devise不管理模型,爲什麼Devise會簽署一個模型?現在,也許你可以使用'token_authenticatable'作爲登錄策略,將Devise添加到'Client'模型中,並從那裏開始,保存一些與客戶端應該訪問的額外數據。但是,請注意,設計令牌是按型號的,而不是「每個許可」,因爲它聽起來像您想要的(例如,「客戶端」可能有多個令牌,每個令牌都用於不同的比較URL)。但是國際海事組織設計是這樣的 - 爲Client提供許多帶有相關數據的'token'。 – 2011-04-04 01:58:36
Hrmm .....我已經開始了爲客戶端提供許多令牌的過程 - 但下一步是創建一個類似'stage_id','client_id','client_token'的連接表(它是在客戶端模型)。我寫了一個自定義的'generate_client_token'方法,因此給定所有這些對使用Devise有什麼好處?我的方法只是令牌的一代。沒有其他類似Devise的。 – marcamillion 2011-04-04 03:08:02