#php #laravel-7 #laravel-passport #laravel-api
#php #laravel-7 #laravel-passport #laravel-api
Вопрос:
Я создал laravel api с аутентификацией паспорта. У меня есть следующий интерфейс входа, который работает правильно.
<script type="text/javascript">
$("#loginfrm").on("submit", function(event){
event.preventDefault();
var username = $("#username").val();
var password = $("#password").val();
var dcookie = document.cookie;
$.ajax({
type: "POST",
url: "http://api-auth.test/api/auth/login",
headers: {
"X-CSRF-TOKEN" : '{{ csrf_token() }}',
"Authorization": "Bearer " "{{ Cookie::get('laravel_token') }}",
},
data:{
"_token": "{{ csrf_token() }}",
"username": username,
"password": password
},
complete: function (data) {
if (data.responseJSON["authstat"] == "Authorized")
{
window.location.href = "http://api-auth.test/employees";
}
else
{
alert(data.responseJSON["authstat"]);
}
}
});
});
</script>
И мой API routes/api.php
:
Route::prefix('auth')->group(function(){
Route::post('/register', 'AuthController@register');
Route::post('/login', 'AuthController@login');
});
Использование моего собственного api:
Моя проблема в том, что когда мое приложение перенаправляет на "http://api-auth.test/employees"
страницу, страница на самом деле не аутентифицируется. Ниже мой routes/web.php
:
Route::get('/inbox', function () {
return view('pages.employees');
});
Затем я попытался инкапсулировать свой маршрут как то, что я ищу здесь, в stackoverflow:
Route::group(['middleware' => 'auth:api'], function () {
Route::get('/inbox', function () {
return view('pages.employees');
});
});
И он возвращает ошибку:
SymfonyComponentRoutingExceptionRouteNotFoundException
Route [login] not defined.
Я обнаружил, что ошибка возникает, Middleware/Authenticate.php
и я не знаю, что с ней делать.
protected function redirectTo($request)
{
if (!($request->expectsJson())) {
return route('login');
}
}
Я просто хочу отобразить список сотрудников, когда он перенаправляется для http://api-auth.test/employees
целей тестирования. вот мой EmployeeController
:
public function index()
{
$employee = Employee::all();
return response()->json([
"success" => true,
"message" => "Employee List",
"data" => $employee
]);
}
Любая помощь? Спасибо.
Ответ №1:
Вам необходимо применить промежуточное программное обеспечение «auth», а не «auth: api»
Route::group(['middleware' => 'auth'], function () {
Route::get('/inbox', function () {
return view('pages.employees');
});
});
Комментарии:
1. есть ли способ устранить эту ошибку? «Symfony Component Routing Exception RouteNotFoundException Маршрут [входа] не определен». Я уже пробовал ваше предложение, но все равно возвращает и выдает ошибку.