什么Rails OAuth 2服务器解决方案允许使用相同的控制器与OAuth和基于表单的身份验证?

时间:2012-02-16 09:59:54

标签: ruby-on-rails oauth authentication

我想为浏览器用户(基于表单的身份验证)和OAuth API用户使用相同的控制器。好像像doorkeeper这样的宝石让控制器只接受OAuth 2。

我应该制作一个基本的非auth控制器和两个子类(一个用于OAuth,另一个用于基于表单)?或者是否有一个解决方案允许它在一个控制器类上?

2 个答案:

答案 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