我正在使用Laravel和vue-resource,在下面的演示中:
{
var formData = new FormData();
formData.append('foo', 'bar');
formData.append('pic', fileInput, 'mypic.jpg');
this.$http.patch('/someUrl/'+itemId, formData,{
before(request) {
if (this.previousRequest) {
this.previousRequest.abort();
}
this.previousRequest = request;
}
}).then((response) => {
this.items[index].price = response.data.price;
}, (response) => {
//console.log(response.data);
window.location.href = "../../login";
});
}
控制器:
class CartController extends Controller
{
public function __construct()
{
$this->middleware('auth');
}
public function update(Request $request, $id)
{
$goods = Goods::findOrFail($id);
$goods->amount = $request->get('amount');
$goods->save();
$price = Price::findOrFail($id);
return $price;
}
}
update
的Ajax请求访问CartController
方法,
如果登录,ajax请求成功,它可以工作
如果登录状态过期,我想让它跳转到登录页面,
我测试它,调试工具中的错误是这样的:
但页面并没有跳跃 怎么让它跳?
答案 0 :(得分:0)
您可以在auth
中间件:
Route::group(['middleware' => 'auth'], function(){
Route::get('/', 'HomeController@index')->name('home');
// Add all your non-api routes.
});
这不会解决回调后的重定向,但如果您没有登录,则会阻止您访问触发请求的页面,假设您的表单位于同一个应用程序中你的API。
答案 1 :(得分:0)
您获得的错误是因为CSRF令牌。
在你的脑子部分添加这个
<meta id="csrf-token" name="csrf-token" content="{{ csrf_token() }}"/>
在Vue应用程序文件中添加此
Vue.http.headers.common['X-CSRF-TOKEN'] = document.querySelector('#csrf-token').getAttribute('content');
关于重定向,如果用户未获得授权,请分享更多关于服务器响应的信息。
答案 2 :(得分:0)
将您的路线网址添加到VerifyCsrfToken.php文件中。因此,它将避免令牌验证。
class VerifyCsrfToken extends BaseVerifier
{
protected $except = [
//url go here
];
}