Laravel-将用户重定向到个人资料页面

时间:2016-01-30 14:01:40

标签: php laravel authentication laravel-5

我正在尝试重定向用户,如果他第一次登录到第2页,我尝试了以下

    public function postLogin(Request $request){

    $credentials = $request->only('login_email', 'login_password');
    $credential = ['email'=> $credentials['login_email'], 'password' => $credentials['login_password']];
    if (Auth::attempt($credential)) {
        // if profile not set, redirect to step 2 page
        if(Auth::user()->first_login) {

          return  $this->getStep2(Auth::user()->id);


        }
}

但它告诉我

{"login":true}

我的getStep2()就像

    public function getStep2($id){
    $genres = Track::orderBy('genre', 'asc')->groupBy('genre')->get();
    $countries = Country::all();
    $categories = Category::where('parent_id',  '')->get();
    $user_id = $id;
    return view('users.step2', compact('genres', 'countries', 'categories', 'user_id'));
}

2 个答案:

答案 0 :(得分:2)

如果你想重定向,你应该

return redirect('users/step2');

然后,在routes.php中有这条路线

Route::get('users/step2', 'UserController@getStep2');

请注意,您不需要将用户ID实际作为参数传递,因为您可以使用Auth外观访问它。

如果您要执行的操作实际上是加载视图,那么您的方法应该就是这样做的。我的猜测是你的一个方法在到达return语句之前就结束了。

答案 1 :(得分:0)

您还可以使用redirect()->action(...)方法。

public function postLogin(Request $request) {

    $credentials = $request->only('login_email', 'login_password');
    $credential = ['email' => $credentials['login_email'], 'password' => $credentials['login_password']];

    if (Auth::attempt($credential)) {
        // if profile not set, redirect to step 2 page
        if (Auth::user()->first_login) {
            return redirect()->action('Auth\AuthController@getStep2');

        }
    }

    return redirect('/');
}

请注意,您仍然需要为此页面创建路线。

Route::get('step-two', ['uses' => 'Auth\AuthController@getStep2']);

要访问当前用户,您可以使用Auth::user()方法。