我正在基于Laravel-5.7
的应用程序中使用Laravel-5.7
。这是第一次对使用Passport
处理任何Laravel
应用程序。我能够成功地生成oauth_access_token
。但是,在我的应用程序Passport
中集成会中断运行ajax调用。我试图在互联网上找到解决方案,但我遗漏了一些要点。
每当我发出ajax请求时,我都会得到这个结果{"message":"Unauthenticated."}
因为这个路由应该在管理面板中使用,所以它使用了一个受保护的路由。这里是ajax调用的Javascript代码:
jQuery(function ($) {
startTime();
$('button[name="controller"], button[name="generateApi"]').on('click', function () {
var url = "";
var button = $(this);
var data = {api_token: "{!! $user->api_token !!}"};
if (button.hasClass('tre')) {
url = "{{ route('abc') }}";
} else {
url = "{{ route('xyz') }}";
data.dataId = button.data('id');
}
var x = document.cookie;
$.ajax({
url: url,
headers: {
"X-CSRF-TOKEN" : '{{ csrf_token() }}',
"Authorization": "Bearer " + "{{ Cookie::get('laravel_token') }}",
},
type: 'post',
dataType: 'json',
data: data,
}).done(function (res) {
if (button.hasClass('tre')) {
$('input[name="apiKey"]').val(res.apiKey);
return true;
}
$(button).toggleClass('btn-success btn-danger');
});
});
});
API路由声明:
Route::post('functionCall', ['middleware' => 'auth:api', 'uses' => 'XYZ@functionCall', 'as' => 'xyz']);
请帮我整理一下我在这段代码中遗漏了什么。
发布于 2018-09-09 07:48:19
如果您使用Javascript使用自己的API,则需要将中间件Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
添加到您的路由中。参见docs:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript。
https://stackoverflow.com/questions/52246064
复制