介绍

Lumen中的身份验证使用与Laravel相同的基础库,但其配置与完整的Laravel框架完全不同。由于Lumen不支持会话状态,因此必须通过无状态机制(例如API令牌)对要认证的传入请求进行认证。

入门

认证服务提供商

注意:在使用Lumen的身份验证功能之前,您应该取消对该调用的注释,以AuthServiceProvider在文件中注册服务提供商。bootstrap/app.php

AuthServiceProvider位于您的目录包含一个单一的电话。该方法接受一个Closure,当需要验证传入请求时将调用Closure。在此关闭中,您可以根据需要解决实例。如果找不到该请求的已认证用户,则闭包应返回:app/Providers``Auth::viaRequest``viaRequest``App\User``null

  1. $this->app['auth']->viaRequest('api', function ($request) {
  2. // Return User or null...
  3. });

同样,您可以根据需要检索经过身份验证的用户。您可以在请求标头或查询字符串中使用API令牌,在请求中使用承载令牌,或使用应用程序需要的任何其他方法。
如果您的项目不使用Eloquent,则可以返回该类的实例。此类接受属性数组作为其唯一的构造函数参数:Illuminate\Auth\GenericUser

  1. use Illuminate\Auth\GenericUser;
  2. return new GenericUser(['id' => 1, 'name' => 'Taylor']);

访问经过身份验证的用户

就像在完整的Laravel框架中一样,您可以使用方法来检索当前用户。或者,您可以在实例上使用该方法:Auth::user()``$request->user()``Illuminate\Http\Request

  1. use Illuminate\Http\Request;
  2. $router->get('/post/{id}', ['middleware' => 'auth', function (Request $request, $id) {
  3. $user = Auth::user();
  4. $user = $request->user();
  5. //
  6. }]);

注意:如果要用于访问当前经过身份验证的用户,则应在文件中取消注释该方法。Auth::user()``$app->withFacades()``bootstrap/app.php

当然,您希望验证的任何路由都应分配给auth 中间件,因此您应该在文件中取消对该调用的注释:$app->routeMiddleware()``bootstrap/app.php

  1. $app->routeMiddleware([
  2. 'auth' => App\Http\Middleware\Authenticate::class,
  3. ]);