我有一个 Rails 4 应用程序。我使用devise进行身份验证,使用oppro为我的 API 提供 oauth2。所有请求都通过权威政策授权,直到现在,这个设置完全没问题。
目前,我的授权始终基于每个用户完成。这是有道理的,因为通常每个请求都是代表特定用户完成的,该用户要么在会话中进行身份验证,要么提供 oauth-token。
新的挑战是:我有某些 API 消费者(从现在开始我称他们为设备),他们的请求不能被视为来自特定用户的请求。一种是可以与 API 交换信息的Asterisk Server,另一种是GPS Tracking Box,它不断将跟踪点推送到 API。
因此,我需要在每个设备的基础上授权某些 API 操作,这意味着不一定有current_user
可用的。但是没有current_user
搞砸我的授权概念。
我已经考虑了解决这个问题的几种方法:
- 为每个设备创建专用用户并授权他们执行特定操作
- 亲:不会搞砸我的授权计划
- 对比:意味着重新考虑
User
-Model,因为目前我只有需要姓名、生日、电子邮件等的“自然用户”
- 使用经过调整的授权方案创建专用控制器
- 亲:高灵活性
- 相反:
- 所需设备的身份验证
- 需要额外的 API 端点,感觉不是很干燥
我正在为这种情况寻找最佳实践方法。我相信这不是一个特别的问题,并且必须有很好的解决方案。