ajax - 为 Ajax 调用使用 Passport:Laravel
问题描述
我Passport
在我Laravel-5.7
的基于应用程序中使用。这是我第一次Laravel
使用Passport
. 我能够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']);
请帮我理清这段代码中缺少的内容。
解决方案
如果您使用 Javascript 使用自己的 API,则需要将中间件添加Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
到您的路由中。请参阅文档:https ://laravel.com/docs/5.6/passport#sumption-your-api-with-javascript 。
推荐阅读
- mysql - 如何连接 MVC 和 MYSQL
- sql - 无需 UNION 的 VIEW 中的继承查询(SQL Server)
- c# - 非静态字段、方法或属性“ApplicationDbContext.Locations”需要对象引用
- javascript - 如何阻止键输入阻止画布上绘制的对象的移动?
- amazon-web-services - 如何在 AWS Device Farm 中的 iOS 设备上安装 CA 证书
- tensorflow - keras 中的自定义指标转到 NaN
- numpy - 如何使用范围索引多维 NumPy 数组?
- node.js - 使用 nodejs 使用 Alexa 录制简短的 blob 音频
- java - java 错误:无法找到或加载主类,但我的代码、java 版本、环境变量都可以
- angular - 如何使用事件发射器调用返回值的函数,并在继续之前等待响应?