在我的Laravel应用程序中,我有一个注册系统,它使用通过
php artisan make:auth
注册新用户,但登录后,我想将该用户转到另一个名为
member-type
这样他们就可以选择自己想要的成员类型。
我应用
protected function authenticated(Request $request, $user)
它来自
AuthenticatesUsers
要检查用户是否成功登录,我将检查是否设置了成员类型。
方法如下:
/**
* The user has been authenticated.
*
* @param \Illuminate\Http\Request $request
* @param mixed $user
* @return mixed
*/
protected function authenticated(Request $request, $user)
{
Log::info("{$user->log_reference} logged in to their account with IP: {$request->getClientIp()}");
if(!$user->investor_type_selected){
// dd('I NOT SELECTED');
return redirect()->route('user.investor-type');
} elseif(!$user->member_type_selected){
dd('M NOT SELECTED');
return redirect()->route('user.member-type');
} else{
dd('BOTH SELECTED');
return redirect()->route('user.dashboard');
}
}
方法
member_type_selected and
已选择投资者类型
come from my
用户模型,它们看起来如下:
/**
* Check whether this user has selected an investor type
*/
public function getInvestorTypeSelectedAttribute()
{
return !empty($this->investor_type) ? true : false;
}
/**
* Check whether this user has selected an investor type
*/
public function getMemberTypeSelectedAttribute()
{
return !empty($this->member_type) ? true : false;
}
很简单的东西。
dump和die在那里测试语句是否正在执行。
不管怎样,我的问题是中间件
RedirectIfAuthenticated
当我使用一个定制的防护装置时:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @param string|null $guard
* @return mixed
*/
public function handle($request, Closure $next, $guard = null)
{
switch ($guard) {
case 'admin':
if (Auth::guard($guard)->check()) {
return redirect()->route('admin.dashboard');
}
break;
default:
if (Auth::guard($guard)->check()) {
return redirect()->route('user.dashboard');
}
break;
}
return $next($request);
}
现在,一旦用户通过身份验证,它就会启动并绕过我的重定向
authenticated
. 我通常需要这个中间件来确保用户返回到他们的仪表板,但是有没有一种方法可以防止这种情况绕过我的重定向?