заблокировать доступ к странице Zend Framework

Я создал страницу входа для моего сайта с Zend Framework, это работает.
на странице А (Www.example.com/a) , пользователь должен войти в систему, и если имя пользователя и пароль совпадают, пользователь переходит на страницу B, C, ..(Www.example.com/b)
но если кто-нибудь вставит ссылку напрямую (Www.example.com/b) ,Он может видеть страницу B без какого-либо разрешения, как это исправить?

3

Решение

Вы можете использовать плагин.

Например, вы можете попробовать что-то вроде этого:

В вашей начальной загрузке добавьте эту функцию (чтобы объявить плагин)

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) ;
}
}
}
1

Другие решения

Я не использовал Zend, но это можно сделать просто в Laravel, используя фильтр ‘before: auth’ в маршруте.

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

Таким образом, перед посещением страницы «b» напрямую через URL, система проверит, аутентифицирован ли пользователь, если нет, то отобразит страницу с ошибкой.

Вы можете обратиться к 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

0

По вопросам рекламы [email protected]