3

我在 Zend Framework 2 中实现了 HttpUserAgent 和 RemoteAddr 验证器来帮助防止会话劫持。

use Zend\Session\Validator\HttpUserAgent;
use Zend\Session\SessionManager;

$manager = new SessionManager();
$manager->getValidatorChain()->attach('session.validate', array(new HttpUserAgent(), 'isValid'));

它似乎确实停止了被劫持的会话,但是它并没有让我显示一个很好的错误消息或将用户重新路由到登录页面,而是我收到了这个 PHP 错误消息:

Fatal error: Uncaught exception 'Zend\Session\Exception\RuntimeException' 
with message 'Session validation failed' in \zendframework\library\Zend\Session\SessionManager.php on line 111.

是否有回调或其他我没有做的事情来防止代码死亡?

4

1 回答 1

0

这是 php 我们不使用回调,而是抛出异常。您需要捕获异常并从那里开始处理它。

我建议使用事件管理器并监听调度事件来验证用户。

于 2013-09-24T15:00:55.843 回答