繁体   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