我想为浏览器用户(基于表单的身份验证)和OAuth API用户使用相同的控制器。好像像doorkeeper这样的宝石让控制器只接受OAuth 2。
我应该制作一个基本的非auth控制器和两个子类(一个用于OAuth,另一个用于基于表单)?或者是否有一个解决方案允许它在一个控制器类上?
答案 0 :(得分:2)
您也可以使用门卫执行此操作,因为您可以将自己的选项传递给过滤器:
doorkeeper_for :all, {:if => lambda{|c| !current_user}}
如果用户没有记录(例如没有current_user),这只会打开门卫。
答案 1 :(得分:1)
oauth-plugin允许这样做。您可以指定:
oauthenticate, :interactive => true
这将允许登录用户和OAuth用户访问相同的控制器操作。
我使用oauth-plugin在setting up an OAuth2 provider上写了一篇博文。您可以在大多数情况下关注它,但是您可能不希望拥有API基类,并且您想要替换:
oauthenticate, :interactive => false
使用:
oauthenticate, :interactive => true