Laravel登录后重定向到上一个动态页面

时间:2017-05-30 19:30:54

标签: laravel

我想知道如何在登录后重定向用户?

让我们说我在页面上#34; www.mysite.com/users/2" 然后我尝试编辑博客文章而不登录并发送到登录页面,登录后我希望返回" www.mysite.com/users/2"

到目前为止我已尝试过这个:

if (Auth::attempt($credentials,$remember)) {
            return redirect()->back();
        } else {
          return redirect()->back()->withErrors([trans('api.couldnotlogin')]);
        }

但是return redirect()->back();只会将我重定向到" www.mysite.com /"

更新

我用它来工作:

public function showLoginForm()
    {
      $previous_url = Session::get('_previous.url');
        $ref = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '';
        $ref = rtrim($ref, '/');
        if ($previous_url != url('login')) {
            Session::put('referrer', $ref);
            if ($previous_url == $ref) {
                Session::put('url.intended', $ref);
            }
        }
      return view('auth.login');
    }

    public function loginUser(ApiAuthUserPassRequest $request)
    {
      if ($request->has('rememberme')) {
          $remember = $request->input('rememberme');
      } else {
        $remember = false;
      }
        $credentials = ['email' => $request->input('email'), 'password' => $request->input('password')];
        if (Auth::attempt($credentials,$remember)) {
            if (Session::has('referrer')) {
              return redirect()->intended(Session::pull('referrer'));
            } else {
              return redirect('/account');
            }
        } else {
          return redirect()->back()->withErrors([trans('api.couldnotlogin')]);
        }

    }

1 个答案:

答案 0 :(得分:0)

Laravel 5.1具有特征Illuminate/Foundation/Validation/ValidatesRequests.php方法

protected function getRedirectUrl()
{
    return app(UrlGenerator::class)->previous();
}

其中UrlGeneratorIlluminate/Routing/UrlGenerator.php。您可以尝试使用previous()方法。