没有身份验证的Laravel 5.3 RESTFul API

4

我想使用Laravel 5.3创建一个API,但是我不需要任何形式的身份验证。是否可以去掉它?我不想要任何令牌或任何形式的身份验证。


是的,这是可能的。 - Komal
5个回答

7

是的,这是可能的,通常在你的

route/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'

5
为了帮助到和我有相同问题的人:请注意,api.php 中的任何路由都需要加上前缀 "api/",这个前缀是在 /app/Providers/RouteServiceProvider.php 中设置的。
例如: Route::get('/delegates', "APIController@delegate"); 可以通过以下链接进行访问: http://www.yourdomain.com/api/delegates 如果这有点偏题,请谅解,但我希望能对某些人有所帮助。

2
当然可以摆脱它。只需设置您的路由不使用任何中间件即可。
routes/api.php 文件上创建您的 API 路由,然后修改 app/Http/Kernel.php 文件以正确设置您的中间件:
api 中间件组中删除(或添加)您不需要的中间件。
默认情况下,L5.3 在 api 组上有两个中间件:
'api' => [
            'throttle:60,1',
            'bindings',
        ],

第一个功能是为您的API提供速率限制(每分钟60个请求), 第二个功能替代了您的模型绑定。

1

只要创建到您的控制器的路由并返回数据即可实现(不需要任何身份验证中间件)。


-1

允许您的路由在未经授权的情况下运行

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 中间件并不是用来验证用户身份的。您的回答并没有解决认证问题。 - Elias Soares

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接