ВАЖНОЕ РЕДАКТИРОВАНИЕ: Кажется, я не могу воспроизвести проблему в Chrome, она периодически возникает в Firefox (около 50/50).И это происходит еще больше на краю (около 70/30).
Я проверил другие подобные вопросы, но они не решают проблему.
Я использую Angular JS с Laravel 5.4, отправляю запрос GET
, и иногда он бывает успешным, а иногда и неудачным.Когда я говорю «провал», я имею в виду, что буквально ничего не получаю назад.Я не получаю ошибок, и я могу подтвердить, что файл laravel.log регистрирует другие ошибки, но ничего для этого нет.
В моей консоли у меня есть два примера, которые были сделаны один за другим.
запрос называется get-user-roles
, а функция вызывается по адресу UserController@getUserRoles
Ошибка:
Успешно: Вы можете видеть, что во втором я получаю пустые данные, как и ожидалось.
Вот мои web.php
в / маршрутов
Route::group(
[
'middleware' => ['cors', 'switchdb'],
], function () {
// auth
Route::resource('authenticate', 'AuthenticateController', ['only' => ['index']]);
Route::post('authenticate', 'AuthenticateController@authenticate');
Route::group(
[
'middleware' => ['jwt.auth'],
], function () {
Route::get('get-user-roles', 'UserController@getUserRoles');
});
Route::group(
[
'middleware' => ['jwt.auth', 'is-not-customer'],
], function () {
// more functions
});
});
Вот мой контроллер UserController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\User;
use App\Role;
use App\Http\Requests\PublishUserRequest;
use App\Http\Requests\ChangePasswordRequest;
use Auth;
class UserController extends Controller
{
protected $user;
public function __construct()
{
$this->user = new User();
}
public function getUserRoles()
{
try {
$roles = $this->user->getPagesForRoles(Auth::user()->id);
foreach ($roles as $key => $role) {
if ($role['hasRole'] == 0) {
unset($roles[$key]);
}
}
return response()->json([
'data' => $roles
], 200
);
} catch (\Exception $e) {
return response()->json([
'message' => $e->getMessage(),
'line' => $e->getLine()
], 400
);
}
}
}
И мой код модели (App\User)
для получения ролей ...
public function getPagesForRoles($userID = false)
{
if (!$userID) {
$userID = Auth::user()->id;
}
$pagesForRoles = $this->role->getRoles();
// check if user has role or not and add it to data
if ($userID != 0) {
foreach ($pagesForRoles as $key => &$role) {
$hasRole = DB::table('user_roles')
->where('role_id', '=', $key)
->where('user_id', '=', $userID)
->get();
if (isset($hasRole[0])) {
if($key == 'admin') {
$hasAdminRole = 1;
}
$role['hasRole'] = 1;
} else {
$role['hasRole'] = 0;
}
}
}
if($userID == 1 || (isset($hasAdminRole) && $hasAdminRole == 1)) {
$pagesForRoles = array(
$pagesForRoles['admin']
);
$pagesForRoles[0]['hasRole'] = 1;
}
return $pagesForRoles;
}
getRoles()
, который вызывается в коде моделипросто возвращает жестко закодированный массив.
EDIT: Стоит отметить, что когда я выполняю die('test');
в своей функции контроллера, я получаю ответ каждый раз.