我似乎无法理解使用Zend Framework对REST进行身份验证的方式。我希望用户能够登录一次,然后允许他根据他的用户级别访问网站的任何区域。我们有一个有效的非 REST 登录代码,我只是基本上复制了它并放置在Api_LoginController
类postAction()
方法中。
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已经包含了很多这样的东西,通过一些搜索,你会发现很多功能可能会提供其中一些点,并使它们适合你的应用程序。