拉拉维尔护照路线 [登录] 未定义

2022-08-30 23:49:32

我使用Laravel护照进行授权

在 route api 中.php

Route::get('/todos', function(){
  return 'hello';
})->middleware('auth:api');

但是当打开本地主机:8000 / api / todos时,我看到以下错误

 InvalidArgumentException
Route [login] not defined.
 * @return string
 *
 * @throws \InvalidArgumentException
 */
public function route($name, $parameters = [], $absolute = true)
{
    if (! is_null($route = $this->routes->getByName($name))) {
        return $this->toRoute($route, $parameters, $absolute);
    }

    throw new InvalidArgumentException("Route [{$name}] not defined.");
}

/**
 * Get the URL for a given route instance.
 *
 * @param  \Illuminate\Routing\Route  $route
 * @param  mixed  $parameters
 * @param  bool   $absolute
 * @return string
 *
 * @throws \Illuminate\Routing\Exceptions\UrlGenerationException
 */
protected function toRoute($route, $parameters, $absolute)
{
    return $this->routeUrl()->to(
        $route, $this->formatParameters($p

我想要如果用户未通过身份验证,请不要重定向到任何页面,只看到该页面


答案 1

使用Postman并设置标题,否则Laravel Passport永远不会知道它是一个API客户端,从而重定向到网络的/login页面。Accept: application/json

请参阅下图,了解在何处设置接受参数:enter image description here


答案 2

您是否直接在浏览器搜索栏中输入了上述URL?如果您做错了,因为您还需要在request__输入API令牌!

检查请求是否包含令牌或是否制作自己的中间件。

创建中间件的命令

php artisan make:middleware CheckApiToken

https://laravel.com/docs/5.6/middleware

将中间件句柄方法更改为

public function handle($request, Closure $next)
{
    if(!empty(trim($request->input('api_token')))){

        $is_exists = User::where('id' , Auth::guard('api')->id())->exists();
        if($is_exists){
            return $next($request);
        }
    }
        return response()->json('Invalid Token', 401);
}

像这样 你的网址应该是这样的

http://localhost:8000/api/todos?api_token=API_TOKEN_HERE


推荐