我有一个用户模型,设计管理 - 即所有用户都有电子邮件 addy /用户名/密码等。如果用户登录,根据他们的权限,他们可以访问 不同的东西。这工作正常。我可以在Rails 3中的不同模型上使用token_authenticable(来自Devise)吗?
但我有一个客户端模型,我想授予令牌,以便他们可以访问一个特定控制器上的一个特定操作。
理想情况下,我想生成客户端[email protected]
(记住,这不是一个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管理的。但是你确定它不能用于其他模型吗?正如我所说,这是我的第一个倾向,但有人告诉我,否则我无法让他们给我更多的细节,设计文件还不足以教育我在这里。 – marcamillion 2011-04-04 01:54:35
我以前错了,但这听起来不对。如果Devise不管理模型,为什么Devise会签署一个模型?现在,也许你可以使用'token_authenticatable'作为登录策略,将Devise添加到'Client'模型中,并从那里开始,保存一些与客户端应该访问的额外数据。但是,请注意,设计令牌是按型号的,而不是“每个许可”,因为它听起来像您想要的(例如,“客户端”可能有多个令牌,每个令牌都用于不同的比较URL)。但是国际海事组织设计是这样的 - 为Client提供许多带有相关数据的'token'。 – 2011-04-04 01:58:36
Hrmm .....我已经开始了为客户端提供许多令牌的过程 - 但下一步是创建一个类似'stage_id','client_id','client_token'的连接表(它是在客户端模型)。我写了一个自定义的'generate_client_token'方法,因此给定所有这些对使用Devise有什么好处?我的方法只是令牌的一代。没有其他类似Devise的。 – marcamillion 2011-04-04 03:08:02