代码之家  ›  专栏  ›  技术社区  ›  Yousef Altaf

Laravel5.4:当用户登录时,将用户重定向到他的帐户,并尝试转到登录页

  •  1
  • Yousef Altaf  · 技术社区  · 7 年前

    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 回复  |  直到 7 年前
        1
  •  0
  •   Bilal Ahmed    7 年前

    Laravel(authenticate middleware)有两种类型的auth guard, web api . 对于自定义,您必须在authenticate模型中定义 protected $guard = 'customer';

    喜欢 Auth::guard('web')->user() . 类似于 Auth::user() . 您还可以签入默认保护 config/auth.php

    if ( Auth::guard( $guard )->check() ) 那太刻薄了 Auth::guard( 'customer' )->check() 但是auth.php文件中没有customer guard定义

    如果您想创建自定义保护,请阅读 this articles