#php #permissions #zend-framework2 #acl
#php #разрешения #zend-framework2 #acl
Вопрос:
Я следую этому руководству: http://ivangospodinow.com/zend-framework-2-acl-setup-in-5-minutes-tutorial / Но я хочу предоставить разрешение по пользовательским URL-адресам, поэтому у меня были некоторые изменения в моем коде.
В module.acl.roles.php
return array(
'guest'=> array(
'/home.html',
'/login.html',
'/register.html'
),
'admin'=> array(
'/user/add.html',
'/user/edit.html',
'/user/list.html',
),
);
В module.config.php
return array(
'router' => array(
'routes' => array(
'/home.html' => array(
'type' => 'ZendMvcRouterHttpLiteral',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'ApplicationControllerIndex',
'action' => 'index',
),
),
),
'/user/add.html' => array(
'type' => 'ZendMvcRouterHttpRegex',
'options' => array(
'regex' => '/user/add.html',
'defaults' => array(
'controller' => 'ApplicationControllerUser',
'action' => 'add',
'format' => 'html',
),
'spec' => '/user/add.%format%',
),
),
...
),
),
);
Но я получил эту ошибку: Route with name "" not found
. Пожалуйста, дайте мне несколько советов и решений для предоставления разрешений по URL-адресам
Спасибо!
Комментарии:
1. Я предлагаю вам взглянуть на github.com/bjyoungblood/BjyAuthorize вместо этого, а именно route guard
Ответ №1:
Я действительно очень рекомендую модуль BjyAuthorize (https://packagist.org/packages/bjyoungblood/bjy-authorize ).
Но если вы действительно хотите сделать это самостоятельно, вам нужно добавить слушателя в ZendMvcMvcEvent::EVENT_ROUTE
.
Вы можете подключить своего слушателя с помощью
$events->attach(MvcEvent::EVENT_ROUTE, array($this, 'myOnRoute'), -1000);
и в вашем методе myOnRoute вы можете обрабатывать маршрут
public function myOnRoute(MvcEvent $event) {
$match = $event->getRouteMatch();
$routeName = $match->getMatchedRouteName();
// do stuff here (compare to config or whatever)
}