如何在 RESTful 应用中实现单一身份验证


How do I implement single authentication in a RESTful app?

我似乎无法理解使用Zend Framework对REST进行身份验证的方式。我希望用户能够登录一次,然后允许他根据他的用户级别访问网站的任何区域。我们有一个有效的非 REST 登录代码,我只是基本上复制了它并放置在Api_LoginControllerpostAction()方法中。

class Api_LoginController extends REST_Controller
{
    public function postAction() {
        $request = $this->getRequest();
        $form    = new Application_Form_LoginForm;
        if ($request->isPost()) {
            if ($form->isValid($request->getPost())) {
                $email     = $form->getValue('email');
                $password  = $form->getValue('password');
                $user = Application_Model_UserModel::getUserByEmail($email);
                if ( $user && $user->login($password)) {
                        echo json_encode(array('error' => false, 'message' => 'Logged in.'));
                } else {
                       echo json_encode(array('error' => true, 'message' => 'Login failed.'));
                }
            }
        }
    }    
}

我该如何从这里开始?Zend(1.11) 应该能够在后续访问中识别用户吗?现在,它似乎无法在登录后识别同一用户。

可以使用 Zend 在 REST 应用程序中提供身份验证。

这大致是它背后的想法:

  • 用户使用其用户名/密码登录
  • 在应用程序中验证登录凭据
  • 使用这些凭据,您可以生成唯一令牌,类似于普通应用程序中的会话令牌
  • 您将标识令牌发回给用户
  • 用户必须提供其令牌的每个后续请求,以证明他已登录
  • 应用程序将验证此令牌并执行所需的操作

Zend已经包含了很多这样的东西,通过一些搜索,你会发现很多功能可能会提供其中一些点,并使它们适合你的应用程序。