我有身份验证树(客户,供应商,管理员),这是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() )
,这对我来说很好。
答案 0 :(得分:0)
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文件中没有定义客户保护措施
如果要创建自定义防护,请阅读this articles