Laravel 5.4: перенаправить пользователя в свою учетную запись, когда пользователь входит в систему, и попытаться перейти на страницу входа - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть дерево Auth Guard (клиент, поставщик, администратор) и вот это RedirectIfAuthenticated.php выглядит как

public function handle( $request, Closure $next, $guard = null ) {
        switch ( $guard ) {
            case 'supplier':
                {
                    if ( Auth::guard( $guard )->check() ) {
                        return redirect()->route( 'supplier-dashboard' );
                    }
                    break;
                }
            case 'admin':
                {
                    if ( Auth::guard( $guard )->check() ) {
                        return redirect()->route( 'admin-dashboard' );
                    }
                    break;
                }

            default :
                {
                    if ( Auth::guard( $guard )->check() ) {
                        return redirect( '/my-account' );
                    }
                }
        }

        return $next( $request );
    }

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

но приходит к клиенту, он берет меня на страницу входа, что здесь не так, поскольку я определил случай по умолчанию для перенаправления на /my-account

default :
                {
                    if ( Auth::guard( $guard )->check() ) {
                        return redirect( '/my-account' );
                    }
                }

Что мне здесь не хватает?

Решение

Как подсказывает @BilalAhmed, я отлаживал возвращение ( Auth::guard( $guard )->check() ), и результат был false, затем я пытаюсь ( Auth::guard( 'web' )->check() ), и это работало нормально для меня.

1 Ответ

0 голосов
/ 13 ноября 2018

Laravel (аутентификация промежуточного программного обеспечения) имеет два типа аутентификации: web & api.для пользовательских вы должны определить модель аутентификации как protected $guard = 'customer';

По умолчанию используется laravel web как Auth::guard('web')->user().это похоже на Auth::user().Также вы можете проверить защиту по умолчанию в config/auth.php файле

при выполнении этой строки if ( Auth::guard( $guard )->check() ), что означает Auth::guard( 'customer' )->check(), но в файле auth.php

нет определения защиты клиента, если вы хотитечтобы создать собственную охрану, прочитайте эту статью

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