阻止访问页面 Zend Framework

block access to page Zend Framework

我已经使用 Zend Framework 为我的网站创建了登录页面,它有效。
在页面A (www.example.com/a) 中,用户必须登录系统,如果用户名和密码匹配,则用户转到页面B、C。 .(www.example.com/b)
但是如果有人直接插入一个link (www.example.com/b) ,它可以看到页面B,未经任何许可,如何解决?

我没有使用过 Zend,但可以在 Laravel 中使用路由中的过滤器 'before: auth' 简单地完成。

Route::get('b', ['before'=>'auth', function() {
    //return your View here
}]);

这种方式在直接通过URL访问页面'b'之前,系统会检查用户是否已通过身份验证,如果没有,则会显示错误页面。

你可以参考Zend_Auth API在Zend中的实现细节,它会是类似的:

http://framework.zend.com/manual/1.12/en/zend.auth.introduction.html http://framework.zend.com/manual/current/en/user-guide/routing-and-controllers.html

您可以使用插件。

例如,您可以尝试这样的操作:

在你的 bootstrap 中,添加这个函数(声明插件)

public function _initPlugins(){
    $front = Zend_Controller_Front::getInstance();
    $front->registerPlugin(new Application_Plugin_PRoutage());
}

在此示例中,在 application/plugins 文件夹中,像这样创建 PRoutage.php 插件:

class Application_Plugin_PRoutage extends Zend_Controller_Plugin_Abstract
{
    public function dispatchLoopStartup(Zend_Controller_Request_Abstract $request)
    {  
        if ( FALSE === Zend_Auth::getInstance()->hasIdentity()) 
        {  
            // Redirection to login page
            $request->setControllerName('login')
                     ->setActionName('login')
                     ->setDispatched(true) ;
        }
    }
}