@MdaUZH

Реализация middleware, acl?

Очень размыто все понимаю, именно по этому вопрос вышел таким же размытым...

В общем выяснилось что для адекватной проверки пользователя на авторизованность нужен acl и middleware, и вопрос как же это все реализовать и связать?

MVC, нужно проверить авторизован ли пользователь, если да, пропустить, если нет на страницу авторизации.

Как я понял, это нужно сделать до вызова контроллера и нужного экшена в роутере, но вот нагуглить как это все реализовать я не смог, в mvc фреймворках не разбираюсь что как и где, мб вы подскажете как
это все делается?

Например:
site .ru/controller/action - не нужно проверять, авторизован или нет, любого пропустить
site .ru/page/action - нужно проверить, если не авторизован, ссылка на сраницу авторизации

Как это все связать?

на сколько понял middleware для каждого роута нужен свой, но в тоже время глупо плодить их много, например 15 роутов, 12 из них нужна проверка на авторизованность

И можно как-нибудь реализовать 2 middleware для 1 роута, например в site .ru/admin/action - нужна проверка на авторизованность и на определенную группу пользователя (админ, модератор)

Как это будет выглядеть?
буду очень благодарен.
  • Вопрос задан
  • 283 просмотра
Пригласить эксперта
Ответы на вопрос 1
MetaDone
@MetaDone
Хорошо сформулированный вопрос - 50% решения
https://github.com/mrjgreen/phroute
обратите внимание на
$router->filter('auth', function(){    
    if(!isset($_SESSION['user'])) 
    {
        header('Location: /login');

        return false;
    }
});

$router->group(['before' => 'auth'], function($router){

    $router->get('/user/{name}', function($name){
        return 'Hello ' . $name;
    })
    ->get('/page/{id:\d+}', function($id){
        return 'You must be authenticated to see this page: ' . $id;
    });

});

и
https://github.com/mrjgreen/phroute/blob/master/sr...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы