在哪里放置OAuth逻辑?

时间:2011-06-04 03:02:12

标签: php zend-framework oauth service-layer actioncontroller

我在一个项目中使用Zend Framework,而我正在创建一个仅用于身份验证的控制器。 在这个项目中,我们将接受用户通过其他网站(如facebook,twitter,myspace等)的帐户注册。为此,我们将使用OAuth。但我怀疑我应该为每个OAuth站点相关的身份验证设置逻辑?例如,只有facebook在我的控制器中占用了50行代码,这样我的控制器就不会很薄......

我想知道我应该把它放在哪里。 为每个站点创建一个Zend_Auth适配器,仅为此创建一个服务,最好的方法是什么?

抱歉英语不好。 :)

2 个答案:

答案 0 :(得分:1)

您的OAuth逻辑应该存在于模型中,就像所有商务逻辑一样。您应该留下的控制器是控制程序流程和设置视图变量,以便在视图脚本中使用。

亲切的问候 加里

答案 1 :(得分:1)

JF Austin有一个使用generic OAuth authentication adapter implementation的公平Zend_Oauth_Consumer。为Twitter,Facebook等创建此类的特定子类似乎是直截了当的。他甚至似乎已经有了Twitter adapterhis blog post中描述了适配器的使用。

或者,请this one注意Lloyd Watkin

Upshot:所有OAuth逻辑都隐藏在这些适配器中。然后,您的控制器可以实例化此身份验证适配器,将其提供给Zend_Auth::authenticate($adapter),然后根据返回的结果执行操作,使控制器专注于更高级别的应用程序连接。