我正在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
答案 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;
}
)
您可能需要做一些测试才能看到返回的响应并从那里开始。