我正在基于Passport
的应用程序中使用Laravel-5.7
。对我来说,这是第一次,它使用Laravel
来处理任何Passport
应用程序。我能够成功生成oauth_access_token
。但是,在我的应用程序中集成Passport
会中断运行ajax调用。我试图在Internet上找到解决方案,但我遗漏了一点。
每当我发出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']);
请帮我弄清楚这段代码中缺少的内容。
答案 0 :(得分:0)
如果您要使用Java使用自己的API,则需要在路由中添加中间件Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
。参见文档:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript。