2015-04-20 4 views
0

У меня возникли проблемы с созданием многозадачного приложения в laravel5, так как в laravel 5 аутентификация предварительно определена, поэтому я не хочу возиться с предопределенными кодами аутентификации laravel 5. У меня есть конструктор, который проверяет подлинность каждого контроллера в моем проекте, но я не могу проверить роли пользователей для следующих ролей: -Laravel Multi-role не удалось создать в laravel 5

1. Admin 
2. Agent 
3. User 

можно проверить вручную для каждого функций, но это не правильный процесс выполнения так и если у меня есть около 500 функций, я не могу войти в каждую функцию и определить вручную. пожалуйста, любая помощь

Спасибо

+0

Вы не дали четкого представления о том, что вы делаете, есть ли 20 ролей для 500 маршрутов или что? Но может быть то, что вы ищете, используя фильтры маршрутов, чтобы помочь организовать его, взгляните на Zizaco: доверить, даже если вы не используете эту услугу, могут быть примеры, которые помогут вам разработать фильтр маршрутов или другой ответ, подходящий для вашего проект. – Azeame

+0

Существует три роли разных пользователей. роли упоминаются выше в вопросе. Я просто хочу создать три уровня аутентификации для разных пользователей -> ролей. –

ответ

0

Лично я хотел бы использовать ПО промежуточного слоя и маршрутные группы для выполнения этой задачи, которая была бы похожа способ Laravel проверки для проверки подлинности пользователя.

Вам просто нужно определить, когда вам нужно запустить промежуточное программное обеспечение, которое может быть выполнено путем вложения Route::group или ввода промежуточного программного обеспечения с вашего контроллера.

Так, для примера вложенности вы можете иметь что-то вроде этого в маршрутах файл:

Route::group(['middleware' => ['auth']], function() { 

    Route::get('dashboard', ['as' => 'dashboard', function() { 
     return view('dashboard'); 
    }]);  


    Route::group(['prefix' => 'company', 'namespace' => 'Company', 'middleware' => ['App\Http\Middleware\HasRole'], function() { 

     Route::get('dashboard', ['as'=>'dashboard', function() { 
      return view('company.dashboard'); 
     }]); 
     Route::resource('employees', 'EmployeesController'); 
     ... 
     ... 
    }); 

}); 

или вы можете вводить связующее ПО контроллеров, как так:

use Illuminate\Routing\Controller; 

class AwesomeController extends Controller { 

    public function __construct() 
    { 
     $this->middleware('hasRole', ['only' => 'update']) 
    } 

} 

А потом добавьте один или несколько файлов промежуточного программного обеспечения, используя что-то вроде php artisan make:middleware HasRole, которое даст вам табличку с программным обеспечением промежуточного программного обеспечения, которую вы могли бы добавить в свою логику проверки роли:

<?php namespace App\Http\Middleware; 

use Closure; 

class HasRole { 

    /** 
    * Handle an incoming request. 
    * 
    * @param \Illuminate\Http\Request $request 
    * @param \Closure $next 
    * @return mixed 
    */ 
    public function handle($request, Closure $next) 
    { 
    if($request->is('admin/*')){ 

     [******ADD YOUR LOGIC HERE TO DETERMINE THE ROLE ******] 
     [******YOU CAN ALSO INCLUDE ANY REDIRECTS IF NECESSARY******] 

     }   
    return $next($request); 
    } 

} 

Уведомление Я использовал $route->is('admin/*') для фильтрации любых маршрутов в качестве примера последующих запросов на фильтрацию, которые вы, вероятно, не включили бы, если вы вводите промежуточное программное обеспечение с контроллера.

Но если пользователь передает требуемую проверку роли, вам не нужно ничего делать, и им будет разрешено продолжить просмотр. Если они не выполняют проверку роли, вы можете справиться с этим соответствующим образом, но будьте осторожны, чтобы их поймали в неудавшемся цикле разрешений.

Я предполагаю, что вы получите его суть, не стесняйтесь заглядывать в Laravel middleware docs для получения дополнительной информации.

Смежные вопросы