Intereting Posts
Каков наилучший способ / практика получения расширения загруженного файла в PHP Вопрос MYSQL ON DUPLICATE KEY UPDATE Защита входа в систему с помощью сеанса Переменные PHP с тем же именем Поместите URL-адреса из строки в массив с помощью regex (проблема с периодом ожидания) Регулярное выражение PHP – получить номер из строки Что означает ошибка «PHP Fatal error: не может вызвать перегруженную функцию для не-объекта»? Порт Plesk nginx 80 не работает Как отображать содержимое одной страницы на другой странице? XMLReader – как обрабатывать незадекларированное пространство имен PHP: проверка нечувствительности к регистру Добавить пользовательскую ссылку в начало страницы Magento Как искать URL-адреса, которые не находятся ни в одном теге html, а затем превращать их в гиперссылки? Файл шаблона шаблона Symfony / Sonata не найден и как организованы структуры каталогов Производительность PHP multi cURL хуже, чем последовательная file_get_contents

Middleware, как перенаправить после проверки Laravel 5

Мне нужно после проверки, если пользователь зарегистрирован как редактор, чтобы перенаправить на страницу профиля …

Вот мой код:

<?php namespace App\Http\Middleware; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redirect; use Closure; class AdminMiddleware { /** * Handle an incoming request. * * @param \Illuminate\Http\Request $request * @param \Closure $next * @return mixed */ public function handle($request, Closure $next) { if(Auth::check()){ if(Auth::user()->roles->toArray()[0]['role'] == 'editor'){ return redirect('/profile'); } return $next($request); } else { return $next($request); } } } 

Проблема с этим кодом – когда пользователь является редактором, я получаю бесконечный цикл ….

Вот мои маршруты:

 Route::group(['middleware' => 'auth'], function(){ Route::get('home', ['middleware' => 'admin', function() { return view('home'); }]); Route::get('profile', array( 'as' => 'profile', 'uses' => 'UserController@getProfile' )); }); 

Кто-нибудь знает, в чем проблема?

Где вы зарегистрировали свое промежуточное ПО в App\Http\Kernel ?

Является ли он защищенным $middleware = [] или protected $routeMiddleware = [] ?

Если он зарегистрирован в $middleware он будет запускаться по каждому запросу, тем самым вызывая бесконечный цикл, если так использовать только $routeMiddleware

Перейдите в Kernel.php . Это в app\http . Попробуйте найти protected $routeMiddleware в этом массиве, который вам нужно добавить

 'admin' => \App\Http\Middleware\AdminMiddleware::class 

После этого он должен работать нормально. Надеюсь, это поможет любому, кто сталкивается с той же проблемой.

Я обнаружил, что это меньше кода и меньше решений для перенаправления пользователей на основе ролей. Поместите это в свой AuthController.php

 protected function authenticated( $user) { if($user->user_group == '0') { return redirect('/dashboard'); } return redirect('my-account'); } 

https://laracasts.com/discuss/channels/laravel/how-best-to-redirect-admins-from-users-after-login-authentication