簡體   English   中英

我可以在不同於Rails 3中主要身份驗證模型的模型上使用token_authenticable(來自Devise)嗎?

[英]Can I use token_authenticable (from Devise) on a different model than my main authentication model in Rails 3?

我有一個由Devise管理的用戶模型-即所有用戶都有電子郵件地址addy /用戶名/ pass等。如果用戶登錄,則根據其權限,他們可以訪問其他內容。 很好

但是我有一個Client模型,我想向其授予令牌,以便他們可以訪問一個特定控制器上的一個特定操作。

理想情況下,我想為客戶端john.brown@abc.com生成令牌(請記住,這不是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的TokenAuthenticatable策略的目的是登錄由Devise通過令牌管理的用戶。 因此,devise必須已經管理了您要登錄的模型,這聽起來像在您的應用中, Client不是由Devise管理的。 我認為這不會對您有幫助。

Devise主要在進行身份驗證。 您需要什么授權插件。 例如,嘗試使用cancan (https://github.com/ryanb/cancan)。 這將使您向用戶授予“角色”並授權他們執行(或不執行)某些操作。

也可以使用Railscast: http ://railscasts.com/episodes/192-authorization-with-cancan

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM