Я создал страницу входа для моего сайта с Zend Framework, это работает.
на странице А (Www.example.com/a) , пользователь должен войти в систему, и если имя пользователя и пароль совпадают, пользователь переходит на страницу B, C, ..(Www.example.com/b)
но если кто-нибудь вставит ссылку напрямую (Www.example.com/b) ,Он может видеть страницу B без какого-либо разрешения, как это исправить?
Вы можете использовать плагин.
Например, вы можете попробовать что-то вроде этого:
В вашей начальной загрузке добавьте эту функцию (чтобы объявить плагин)
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, но это можно сделать просто в 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