为 Ajax 类使用 Passport:Laravel
Consume Passport fror Ajax calls : Laravel
我在基于 Laravel-5.7
的应用程序中使用 Passport
。这是我第一次 使用Passport
处理任何Laravel
应用程序。我能够成功生成 oauth_access_token
。但是,在我的应用程序中集成 Passport
会中断 运行 ajax 调用 。我试图在 Internet 上找到解决方案,但我遗漏了一些要点。
每当我发出 ajax 请求时,我都会得到这个结果 {"message":"Unauthenticated."}
因为这个路由应该在管理面板中使用,所以它使用了一个受保护的路由。这是我的 Javascript 代码,用于 ajax 调用:
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']);
请帮我找出这段代码中缺少的内容。
如果您使用自己的 API 和 Javascript,您需要将中间件 Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
添加到您的路由中。请参阅文档:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript.
我在基于 Laravel-5.7
的应用程序中使用 Passport
。这是我第一次 使用Passport
处理任何Laravel
应用程序。我能够成功生成 oauth_access_token
。但是,在我的应用程序中集成 Passport
会中断 运行 ajax 调用 。我试图在 Internet 上找到解决方案,但我遗漏了一些要点。
每当我发出 ajax 请求时,我都会得到这个结果 {"message":"Unauthenticated."}
因为这个路由应该在管理面板中使用,所以它使用了一个受保护的路由。这是我的 Javascript 代码,用于 ajax 调用:
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']);
请帮我找出这段代码中缺少的内容。
如果您使用自己的 API 和 Javascript,您需要将中间件 Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
添加到您的路由中。请参阅文档:https://laravel.com/docs/5.6/passport#consuming-your-api-with-javascript.