![](/img/trans.png)
[英]Custom Authentication Strategy for Devise Using :token_authenticable
[英]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.