Zend framework2 API的ZfcUser身份验证
在我目前正在进行的项目中,我遇到了以下情况:有一个web应用程序可供人类用户通过浏览器访问,用户可以在登录后操作数据库中的数据(表示房屋中家用设备的状态)。日志记录功能是通过ZfcUser模块实现的。此外,该应用程序还可以通过计算机访问(安装在设备室内并负责打开和关闭设备的raspberry pi),该计算机可以查看数据库的状态并做出相应的反应 计算机和应用程序之间的通信使用JSON实现,工作正常。但是现在,计算机不发送任何用户特定信息(电子邮件、密码…),因此树莓使用的应用程序功能可以通过任何post请求访问到正确的URL。我希望将用户的电子邮件和密码包含到计算机发送的JSON对象中,以便在执行函数之前,web应用程序检查请求是否有效Zend framework2 API的ZfcUser身份验证,zend-framework2,zfcuser,Zend Framework2,Zfcuser,在我目前正在进行的项目中,我遇到了以下情况:有一个web应用程序可供人类用户通过浏览器访问,用户可以在登录后操作数据库中的数据(表示房屋中家用设备的状态)。日志记录功能是通过ZfcUser模块实现的。此外,该应用程序还可以通过计算机访问(安装在设备室内并负责打开和关闭设备的raspberry pi),该计算机可以查看数据库的状态并做出相应的反应 计算机和应用程序之间的通信使用JSON实现,工作正常。但是现在,计算机不发送任何用户特定信息(电子邮件、密码…),因此树莓使用的应用程序功能可以通过任何
我想知道的是,是否有一种简单的方法可以使用ZfcUser检查凭据(电子邮件和密码,均表示为字符串)是否有效(如果我理解正确,
ZfcuseAuthentification()
方法不能用于此任务,因为它们与浏览器存储的cookie一起工作).您可以使用httprequest并使用来自JSON POST的凭据填充它,然后在调用prepareForAuthentication后尝试对其进行身份验证
应用程序在任何情况下都可以使用cookie。如果GUI是在Linux下编写的,那么很可能是这个QT,因此是-WebKit。如果应用程序是在Windows下编写的(基于MFC/ATL/等)-used MSHTML.DLLI也希望了解更多关于如何使用仅JSON视图类型的服务器实现ZFCUser的信息。。
$adapter = $this->zfcUserAuthentication()->getAuthAdapter();
/** @var \Zend\Http\Request */
$fakeRequest = $this->getRequest();
$fakeRequest->getPost()->set('identity', $username);
$fakeRequest->getPost()->set('credential', $password);
$result = $adapter->prepareForAuthentication($this->getRequest());
// Return early if an adapter returned a response
if ($result instanceof Response) {
throw new LoginException("");
}
$auth = $this->zfcUserAuthentication()->getAuthService()->authenticate($adapter);
if (!$auth->isValid()) {
$this->flashMessenger()->setNamespace('zfcuser-login-form')->addMessage($this->failedLoginMessage);
$adapter->resetAdapters();
// Password does not match
throw new LoginException("Invalid Username or password");
}