这可能是一个常见的问题,但我在任何地方都没有看到任何完整的答案:
我有一个Rails 3应用程序,它正在使用Devise进行网络身份验证,并且运行良好。所有控制器上的所有操作都经过身份验证,并且路由都是restful。用户被重定向到一个网页,输入他们的用户名和密码,然后可以访问资源。
现在我需要向系统添加一个API。大多数控制器/操作将在web和API用户之间共享,但API用户将具有不同的身份验证方案(可能是API密钥)。
所以,如果一个网络用户去
/projects/1/users
要在网上看到用户,API用户应该转到
/api/v1/projects/1/users
使用APIKey=abcd…这样的参数可以看到同样的情况。。。。在标头或params中,以允许身份验证。
我知道解决方案是覆盖SessionController和Routes,但在任何地方都找不到详细的答案。
您可以通过使用令牌身份验证来获得相同的结果:
http://rdoc.info/github/plataformatec/devise/master/Devise/Models/TokenAuthenticatable