我可以在与Rails 3中的主要身份验证模型不同的模型上使用token_authenticable(来自Devise)吗?

时间:2011-04-04 01:33:21

标签: ruby-on-rails ruby-on-rails-3 devise

我有一个Devise管理的用户模型 - 即所有用户都有电子邮件 addy / username / pass等。如果用户登录,则根据他们的权限进行访问 不同的东西。这很好。

但我有一个客户端模型,我想授予一个令牌,以便他们可以访问一个特定控制器上的一个特定操作。

理想情况下,我想为客户端john.brown@abc.com生成令牌(请记住,这不是User.email,而是Client.email),因此他们可以访问compare操作我的 stages控制器,其中舞台的ID为7

我不希望他们能够访问除id7之外的任何其他阶段,并且我不希望他们必须登录。即,一旦他们访问该特定URL(例如,{{1}他们可以看到它。但他们不能拿那个标记,例如转到myapp.com/stages/7/compare?token={unique token generated by devise}

我可以使用Devise做到这一点吗?

若然,怎么样?

2 个答案:

答案 0 :(得分:1)

Devise的TokenAuthenticatable策略的目的是通过令牌登录设备管理的用户。因此,设计必须已经管理您正在登录的模型,并且听起来在您的应用中,Client不是由Devise管理的。在这种情况下,我认为它不会对你有帮助。

答案 1 :(得分:0)

Devise主要进行身份验证。您需要什么授权插件。例如,尝试使用cancan(https://github.com/ryanb/cancan)。这将允许您向用户授予“角色”并授权他们执行(或不执行)某些操作。

还有一个Railscast:http://railscasts.com/episodes/192-authorization-with-cancan