2015-07-31 3 views
5

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

Я прочитал о промежуточном программном обеспечении в документации laravel, но не получил, как это сделать.

я называю следующей ссылкой

http://laravel.com/docs/5.1/middleware#registering-middleware

http://laravel.com/docs/5.1/authentication#protecting-routes

Пожалуйста, помогите мне. Спасибо заранее

ответ

2

Там нет необходимости предоставлять другой логин для разных пользователей - вы можете просто войти в систему и n проверить его роль. Предложите использовать Zizaco/Confide (https://github.com/Zizaco/confide) для пользователей auth и Zizaco/Entrust (https://github.com/Zizaco/entrust/) для ролей.

UPDATE

в ОП не хочет использовать внешние пакеты: маршрут будет выглядеть следующим образом (например):

Route::put('post/{id}', ['middleware' => 'role:admin', function ($id) { 
// 
}]); 

и в чем-то промежуточного слоя, если пользователю проверить играет роль:

if (! $request->user()->hasRole($role)) { 
     // whatever 
} 

UPDATE # 2

Вот учебник (на основе Laravel 5.0, но должно работать):

http://heera.it/laravel-5-0-acl-using-middleware

+0

, спасибо за отвечая. но мне нужно разработать без плагина – vision

+0

, поэтому вам нужно сохранить некоторые роли (модель ролей) в БД, а затем проверить, имеет ли текущий пользователь (модель пользователя) роль (Пользователь в отношении OneToMany to Role), зная, что вы можете легко перенаправить пользователя на другую приборную панель – violator667

+0

, что вы имеете в виду? «Группа»? – violator667

4

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

Использование php artisan make: middleware AdminMiddleware. В папке промежуточного программного обеспечения вы найдете новый файл с этим именем.

Положите вашу логику в вашем промежуточном например

public function handle($request, Closure $next) 
{ 
    if(Auth::check()) 
    { 
     return $next($request); 
    } 
    else 
    { 
     return view('auth.login')->withErrors('You are not logged in'); 
    } 

} 

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

Если вы хотите добавить его ко всем маршрутам, перейдите в Kernal.php и добавьте его в массив $ middleware e.г

protected $middleware = [ 
    'Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode', 
    'Illuminate\Cookie\Middleware\EncryptCookies', 
    'Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse', 
    'Illuminate\Session\Middleware\StartSession', 
    'Illuminate\View\Middleware\ShareErrorsFromSession', 
    'App\Http\Middleware\VerifyCsrfToken', 
    'App\Http\Middleware\AdminMiddleware', 
]; 

Если вы хотите, чтобы добавить его к конкретным маршрутам только добавить его в переменную $ routeMiddleware и добавить Alis на маршрут. например

protected $routeMiddleware = [ 
    'auth' => 'App\Http\Middleware\Authenticate', 
    'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth', 
    'guest' => 'App\Http\Middleware\RedirectIfAuthenticated', 
    'admin' => 'App\Http\Middleware\AdminMiddleware', 
]; 

Затем вы можете добавить его в маршрут в качестве фильтра, например.

Route::get('admin/profile', ['middleware' => 'admin', function() 
{ 

}]); 

Примечание :: этот ответ дается StackOverflow пользователя @ Крис Таунсенд

Ref :: Roles with laravel 5, how to allow only admin access to some root

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