#laravel #api
#laravel #API
Вопрос:
Привет, я пытаюсь создать свое собственное и очень простое промежуточное программное обеспечение api token, поэтому у меня есть промежуточное программное обеспечение:
<?php
namespace AppHttpMiddleware;
use Closure;
use AppApiUser;
class ApiAuth
{
public function handle($request, Closure $next)
{
$api_user_count = ApiAuth::where('api_token', $request->api_token)->count();
if($api_user_count > 0)
{
abort(403, "Auth failed");
}
return $next($request);
}
}
И у меня есть контроллер, где я использую промежуточное программное обеспечение следующим образом:
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('apiauth');
}
НО мне нужно отправить токен внутри промежуточного программного обеспечения, потому что мне нужно проверить в базе данных, существует ли он, интересно, как я могу это сделать?
Спасибо!
Комментарии:
1. зачем вам нужно передавать переменную? единственная переменная, которую вы используете там, взята из запроса
Ответ №1:
есть третий параметр для функции handle, который вы можете передать внутри :
public function handle($request, Closure $next,$var)
{
$api_user_count = ApiAuth::where('api_token', $request->api_token)->count();
if($api_user_count > 0)
{
abort(403, "Auth failed");
}
return $next($request);
}
этот способ передачи переменной в промежуточном программном обеспечении :
public function __construct()
{
$this->middleware('apiauth:'.$var);
}
Комментарии:
1. Интересно, почему промежуточное программное обеспечение не прерывается? Я имею в виду, что я отправляю пустую переменную, и она должна сказать, что сбой аутентификации, но это не работает, почему вы думаете, что это может произойти? Спасибо