[英]Laravel 5.4: redirect user to his account when user is login and try to go to login page
我有树身份验证卫士(客户,供应商,管理员),这是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() )
对我来说很好。
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文件中没有定义客户保护
如果要创建自定义防护,请阅读此文章
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.