2016-02-01 1 views
-1

Я проектирую некоторую часть системы в Laravel 5. Ожидается, что поведение будет описано ниже.Laravel промежуточное одноразовое разрешение для групп маршрутов

  1. Пользователь получает уникальный URL-адрес. Он может быть предоставлен по электронной почте, но это не имеет значения.
  2. Он нажимает на него и получает вход с временным токеном (для продолжительности сеанса), что дает ему возможность получить доступ ко всем URL-адресам в группе разрешенных маршрутов, например. account/*, но если он хочет достичь других ограниченных URL-адресов, то его попросят санкционировать его имя пользователя/пароль.
  3. Если он уже авторизовался, вход в токен не влияет на него.

Мой вопрос о возможности сделать что-то подобное в Laravel из коробки. Я знаю, что есть некоторые службы промежуточного программного обеспечения, но я не уверен, что поведение по умолчанию Guard не будет изменено для работы, как я ожидаю. Раньше я работал с Symfony раньше, и по умолчанию он разрешен брандмауэрами, так что, возможно, в Laravel есть готовое решение?

ответ

0

вы можете абсолютно делать это использование Laravel, вот пример кода не тестировался,

public function handle($request, Closure $next) 
{ 
    if ($this->auth->guest()) { 
     if (preg_match('account', $request->route()->getName()) { //if url is under account, you can get route info from $request->route(); 
      if (!session()->get($token)) { // if not have valid token 
       if ($request->ajax()) { 
        return response('Unauthorized.', 401); 
       } else { 
        return redirect()->route('admin.login.index',['referrer'=>urlencode($request->url())]); 
       } 
      } 
     } else { 
      if ($request->ajax()) { 
       return response('Unauthorized.', 401); 
      } else { 
       return redirect()->route('admin.login.index',['referrer'=>urlencode($request->url())]); 
      } 
     } 
    } 
    return $next($request); 
} 

затем от вашего маршрута просто добавить промежуточную авторизацию в вашу группу, это способ определить, вы запрашиваете в на посредниках , laravel 5.2 поддерживает множественное промежуточное ПО.