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