繁体   English   中英

CakePHP 2.1-作为具有身份验证的Web应用程序和REST服务

[英]CakePHP 2.1 - As a web application and REST service with Authentication

我目前正在开发目前具有表单身份验证的CakePHP应用程序。 我还想打开此应用程序,以供其他应用程序通过REST连接。

我知道CakePHP可以使用

Router::mapResources() 

Router::parseExtensions() 

但是,我不确定如何使用基本或摘要HTTP身份验证来实现此功能。

我在AppController.php中有以下内容

public $components = array(
    'Session',
    'Auth' => array(
        'authenticate' => array(
            'Form'
        ),
        'loginAction' => array(
            'admin' => false,
            'controller' => 'users',
            'action' => 'login'
        ),
        'loginRedirect' => array(
            'controller' => 'users',
            'action' => 'home'
        )
    )
);

例如,如果对于身份验证字段,我输入的是“基本”,则在登录基于Web的版本时,我会收到一个HTTP身份验证框,而不是基于Web的表单。

最好的方法是什么? 我目前唯一想到的方法是创建一个单独的ApiController并手动执行身份验证?

任何建议都会很棒。

更新:

这是我修改后的代码,它使我有正确的行为-我很确定应该有更好的方法来做到这一点。

class AppController extends Controller {

    public $components = array(
        'Session',
        'RequestHandler',
        'Auth' => array(
            'loginAction' => array(
                'admin' => false,
                'controller' => 'users',
                'action' => 'login'
            ),
            'loginRedirect' => array(
                'controller' => 'users',
                'action' => 'home'
            )
        )
    );

    public $helpers = array('Html', 'Form', 'Session');

    public function beforeFilter() {
        $header = $_SERVER['HTTP_AUTHORIZATION'];
        if($header) {
            $this->Auth->authenticate = array('Basic');
        }
    }

}
public function beforeFilter() {

    // Change the authentication if using REST
    if($this->params['ext'] == 'json') {
        $this->Auth->authenticate = array('Basic');
    }

}

如果请求包含扩展名,它将检查JSON扩展名-然后切换到基本身份验证。

检查CakePHP书中的Authentication一章。

CakePHP支持Form,Basic和Digest,您可以创建自己的身份验证对象并使用它们。

您可以加载多个身份验证对象,并且当第一个对象对身份验证处理程序返回true时,Cake会将用户登录。 您只加载了表单身份验证对象,不知道为什么会收到http身份验证框。 Cake不太可能成为问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM