laravel 新用户登录时的中间件重定向
laravel middleware redirection when new user logged in
我想在用户首次登录时重定向到新页面 time.Otherwise 用户将转到正确的 path.The 问题是当我将路由重定向到 sign_up处理调用的路由,它再次将我发送到相同的中间件,所以有一种循环 generated.Please 告诉我如何处理它。
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class TutorMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $guard=null)
{
if (\Auth::guard($guard)->check() && \Auth::user()->type == '3'){
// if ($request->ajax() || $request->wantsJson()) {
// return response('Unauthorized.', 401);
// }
// else { return redirect()->guest('/home');
if(\Auth::user()->first_time_login==false){
// redirecting infinitely
// there must be a condition that check if i am not in the tutor.signup_process route
return redirect()->route('tutor.signup_process');
}
}
else{
return redirect()->guest('/login/join_as_a_tutor');
}
return $next($request);
}
}
我找到了解决方法,方法如下:
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->tutor = \Auth::user();
if ($this->tutor->first_time_login == true && !\Request::is('tutor/signup_process')) {
return redirect()->route('tutor.signup_process');
}
return $next($request);
});
}
我想在用户首次登录时重定向到新页面 time.Otherwise 用户将转到正确的 path.The 问题是当我将路由重定向到 sign_up处理调用的路由,它再次将我发送到相同的中间件,所以有一种循环 generated.Please 告诉我如何处理它。
namespace App\Http\Middleware;
use Closure;
use Illuminate\Http\Request;
class TutorMiddleware
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next, $guard=null)
{
if (\Auth::guard($guard)->check() && \Auth::user()->type == '3'){
// if ($request->ajax() || $request->wantsJson()) {
// return response('Unauthorized.', 401);
// }
// else { return redirect()->guest('/home');
if(\Auth::user()->first_time_login==false){
// redirecting infinitely
// there must be a condition that check if i am not in the tutor.signup_process route
return redirect()->route('tutor.signup_process');
}
}
else{
return redirect()->guest('/login/join_as_a_tutor');
}
return $next($request);
}
}
我找到了解决方法,方法如下:
public function __construct()
{
$this->middleware(function ($request, $next) {
$this->tutor = \Auth::user();
if ($this->tutor->first_time_login == true && !\Request::is('tutor/signup_process')) {
return redirect()->route('tutor.signup_process');
}
return $next($request);
});
}