我要在用户登录后将他们重定向到个人资料页面

时间:2018-07-10 05:41:24

标签: php laravel login-control

我想在用户登录时将其重定向到个人资料页面。但是,它将用户定向到主页('/')页面。有时,如果我以隐身模式打开它,它会起作用。但并非每次都如此。

以下是我的登录控制器

class LoginController extends Controller
{  

    use AuthenticatesUsers;

    protected function redirectTo()
    {
        return '/profile';
    }

    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct(Request $request)
    {
        if($email = $request->user) {

            $user = User::where('email', $email)->first();

            if($user && $user->auto_login_key == $request->key) {
                Auth::loginUsingId($user->id);
            } else {
                Redirect::to('/login')->send();
            }
        }

        $this->middleware('guest')->except('logout');
    }
}

这是我的重定向身份验证的miidleware

class 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)
    {
        if (Auth::guard($guard)->check()) {
            return redirect('/profile');
        }

        return $next($request);
    }
}

3 个答案:

答案 0 :(得分:0)

您可以在身份验证功能内使用return redirect('/profile');,例如:

    public function __construct(Request $request)
{
    if($email = $request->user) {

        $user = User::where('email', $email)->first();

        if($user && $user->auto_login_key == $request->key) {
            Auth::loginUsingId($user->id);
            return redirect('/profile');
        } else {
            Redirect::to('/login')->send();
        }
    }

    $this->middleware('guest')->except('logout');
}

答案 1 :(得分:0)

在任何地方都不要更改任何内容。在您的 LoginController 中,只需将$redirectTo变量更改为'/profile'

/**
 * Where to redirect users after login.
 *
 * @var string
 */
protected $redirectTo = '/profile';

在隐身模式下,问题仅在于缓存。您可以通过按 Ctrl + F5

来重新加载(重新加载和清除缓存)

答案 2 :(得分:-1)

我了解您的问题,在进行此类更改后,您必须先清除缓存,并确保您的浏览器缓存是清除的。

 return redirect('/profile');