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

时间:2013-10-07 04:00:51

标签: php zend-framework authentication

我似乎无法掌握使用Zend Framework进行身份验证的身份验证方式。我希望用户能够登录一次,然后允许他访问网站的任何区域,具体取决于他的用户级别。我们有一个工作的非REST登录代码,我只是基本上复制了它并放在postAction()类的Api_LoginController方法中。

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)是否能够在后续访问中识别用户?现在,它似乎无法在登录后识别同一个用户。

1 个答案:

答案 0 :(得分:0)

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

这大致是它背后的想法:

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

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