我有一个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做到这一点吗?
若然,怎么样?
答案 0 :(得分:1)
Devise的TokenAuthenticatable
策略的目的是通过令牌登录设备管理的用户。因此,设计必须已经管理您正在登录的模型,并且听起来在您的应用中,Client
不是由Devise管理的。在这种情况下,我认为它不会对你有帮助。
答案 1 :(得分:0)
Devise主要进行身份验证。您需要什么授权插件。例如,尝试使用cancan
(https://github.com/ryanb/cancan)。这将允许您向用户授予“角色”并授权他们执行(或不执行)某些操作。
还有一个Railscast:http://railscasts.com/episodes/192-authorization-with-cancan