阻止访问页面 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) ;
}
}
}
我已经使用 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) ;
}
}
}