Как переопределить автоматическое перенаправление laravel, если сессия существует - PullRequest
0 голосов
/ 05 апреля 2019

Здравствуйте, я новичок в laravel и работаю над laravel 5.7 У меня есть 2 разные таблицы авторизации, одна из которых - пользователи, а другие - компании, во-первых, как я могу проверить, из какой таблицы вошел пользователь, и во-вторых, когда я закрываю и открываю браузер laravel автоматически перенаправляет на дом, если сеанс существует, но я также хочу добавить проверку, чтобы перенаправить пользователя на определенную страницу, значит, если пользователь вошел из таблицы пользователя, перенаправить в представление abc, и если компания вошла из таблицы компании, перенаправляет в xyz посмотреть, как можно я переопределить?

1 Ответ

0 голосов
/ 06 апреля 2019

Вот что я делаю для нескольких таблиц аутентификации:

  1. Перейдите в config> auth.php

Add Guard

'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'api' => [
            'driver' => 'token',
            'provider' => 'users',
            'hash' => false,
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
            'hash' => false,
        ],

        'company' => [
            'driver' => 'session',
            'provider' => 'companies',
            'hash' => false,
        ],
    ],

AddПровайдер

'providers' => [
    'admins' => [
        'driver' => 'eloquent',
        'model' => App\User::class,
    ],

     'companies' => [
         'driver' => 'eloquent',
         'model' => App\Companies::class,
     ],
],

Добавить пароль

   'passwords' => [
        'admins' => [
            'provider' => 'admins',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
        'companies' => [
            'provider' => 'companies',
            'email' => 'auth.emails.password',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],
Перейти к приложению \ Http \ Middleware \ RedirectIfAuthenticated

Обновить метод handel

public function handle($request, Closure $next, $guard = null)
    {
        if ($guard === 'admin' && Auth::guard($guard)->check()) {
            return redirect('/admin');
        }
        if ($guard === 'company' && Auth::guard($guard)->check()) {
            return redirect('/company');
        }
        return $next($request);
    }

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

public function __construct()
    {
        // For Admin Users
        $this->middleware('auth:admin');

        // For Companies Users
        //$this->middleware('auth:company');
    }

Или вы также можете добавить промежуточное ПО в маршрут *

Пример

Route::group([
    'namespace'    => 'Companies',
    'middleware'   => 'auth:company'
], function () {
    // Authentication Routes...
    Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
});

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...