没有身份验证的 Laravel 5.3 RESTFul API

Posted

技术标签:

【中文标题】没有身份验证的 Laravel 5.3 RESTFul API【英文标题】:Laravel 5.3 RESTFul API without authentication 【发布时间】:2017-02-23 17:27:15 【问题描述】:

我想用 Laravel 5.3 创建一个 API,但我不需要任何类型的身份验证。有可能摆脱它吗?我不想要任何令牌或任何类型的身份验证。

【问题讨论】:

是的,有可能 【参考方案1】:

是的,有可能 通常在你的

路由/api.php

你会有类似的东西

Route::middleware('auth:api')->get('/user', function (Request $request) 
   return $request->user();
);

您只需要删除引用身份验证的中间件部分。 所以上面看起来像:

Route::middleware('api')->get('/user', function (Request $request) 
  return $request->user();
  //middleware('api') URI prefix. which would become '/api/user'
);

Route::apiResource('user', 'UserController');
//same as above but includes crud methods excluding 'create and edit'

【讨论】:

【参考方案2】:

为了帮助在我的情况下到达这里的任何人:请注意 api.php 中的任何路由都以“api/”为前缀。 它设置在/app/Providers/RouteServiceProvider.php

所以:

Route::get('/delegates', "APIController@delegate");

可以从

访问

http://www.yourdomain.com/api/delegates

对不起,如果有点离题,但希望它可以帮助某人。

【讨论】:

【参考方案3】:

当然你可以摆脱它。只需将您的路线设置为不使用任何中间件。

routes/api.php 文件上创建您的 API 路由,然后修改 app/Http/Kernel.php 文件以正确设置您的中间件:

删除(或添加)api 中间件组中不需要的中间件。

默认情况下,L5.3 在api 组上带有两个中间件:

'api' => [
            'throttle:60,1',
            'bindings',
        ],

第一个为您的 API 提供速率限制(60 个请求/分钟), 第二个替换您的模型绑定。

【讨论】:

【参考方案4】:

允许您的路线在没有身份验证的情况下运行

Http\Middleware\VerifyCsrfToken
public function handle($request, Closure $next)

  if (!$request->is('api/*'))
  
    return parent::handle($request, $next);
  

  return $next($request);

这样设置路线

'api' => 'APIController'

这是 APIController ('/api/data') 中的方法

public function getData(Request $request)

  return "Hello";

【讨论】:

VerifyCsrfToken 中间件不是对用户进行身份验证的人。您的回答不能解决身份验证问题。【参考方案5】:

有可能,只需创建到您的控制器的路由并返回数据(无需任何身份验证中间件)。

【讨论】:

以上是关于没有身份验证的 Laravel 5.3 RESTFul API的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.3记住我身份验证问题

带有 JWT 身份验证的 Laravel 5.3 CORS

如何使用 Laravel Passport (5.3) 记录身份验证尝试

在 Laravel 5.3 中使用多个身份验证?

Laravel 5.3 和 VueJS 2 身份验证

护照身份验证在 laravel 5.3 中不起作用