如何从Laravel / Passport获取Vuejs中的重定向URL

时间:2017-05-16 15:10:42

标签: laravel vue.js vuejs2 laravel-passport

我正在Vue.js中构建一个简单的登录位置,我的后端位于laravel/passport中,用于验证方法。在实施passport之前,我手册login controller获得了redirect url from session这样的内容:

假设我的路由现在在控制器中Route::post('/login', 'LoginController@postLogin),我正在计算这样的事情:

public function postLogin(Request $request)
{
    $this->validate($request, User::$login_validation_rules);
    $data = $request->only('email', 'password');
    $intended_url = Session::get('url.intended', url('/'));
    Session::forget('url.intended');

   // Authentication codes

    return $intended_url, $user;
}

现在我在Vue文件中这样做:

axios.post('/login', postData).then(response => {
     // computation of objects
    window.location.href = '/dashboard';
})

现在,我使用Laravel\passport的网址已更改为axios.post('/oauth/token', postData)

有人可以指导我如何将intended_url添加到此回复中,是否可以同时使用axios request或我必须调用另一个axios request

1 个答案:

答案 0 :(得分:0)

您可以将返回设置为易于解析的Json对象,并且应该能够将Axios设置为自动解析它。

public function postLogin(Request $request)
{
  $this->validate($request, User::$login_validation_rules);
  $data = $request->only('email', 'password');
  $intended_url = Session::get('url.intended', url('/'));
  Session::forget('url.intended');

  // Authentication codes

  return \Response::json([ 'url' => $intended_url, 'user' => $user], 200);
}

这将创建一个包含相关信息的Json对象,并使用正确的标头传递它。在JS中,它应该类似于:

axios.post('/login', postData)
.then(
  response => {
    let JsonObj = JSON.parse(response.body)

    // computation of objects
    window.location.href = JsonObj.url;
  }
)

您可能需要做一些测试才能看到返回的响应并从那里开始。