用户认证

未匹配的标注
本文档最新版为 6.x,旧版本可能放弃维护,推荐阅读最新版!

认证

简介

虽然 Lumen 与 Laravel 使用了相同的底层类库,由于 Lumen 面向无状态 API 的开发,不支持 session,所以默认配置完全不同。
Lumen 必须使用无状态的机制来实现,如 API 令牌(Token)。

开始

认证服务提供者

注意: 在使用 Lumen 的认证功能之前,你应该取消 bootstrap/app.php 文件中对 AuthServiceProvider 调用的注释。

AuthServiceProvider 存放在 app/Providers 文件夹中,此文件只包含一个 Auth::viaRequest 调用。viaRequest 方法会在系统需要认证时被调用,此方法接受一个 Closure (匿名函数也叫闭包函数)参数。在此 Closure (匿名函数也叫闭包函数)内,你可以任意解析 App\User 实例并返回,或者在解析失败时返回 null

$this->app['auth']->viaRequest('api', function ($request) {
    // 返回 User 或者 null...
});

同样,你可以使用你期望的方式来进行用户认证。你可以在请求头或者查询字符中使用 API 令牌,或者使用应用程序所需的任何其他方法。

如果你的项目没有使用 Eloquent,你需要返回一个实例化后的 Illuminate\Auth\GenericUser 类。这个类接收一个属性数组作为他唯一的构造函数参数。

use Illuminate\Auth\GenericUser;

return new GenericUser(['id' => 1, 'name' => 'Taylor']);

获取已认证的用户信息

就像 Laravel 框架一样,你可以使用 Auth::user() 方法来获取当前用户。或者,你可以在 Illuminate\Http\Request 实例上使用 $request->user() 方法。

use Illuminate\Http\Request;

$router->get('/post/{id}', ['middleware' => 'auth', function (Request $request, $id) {
    $user = Auth::user();

    $user = $request->user();

    //
}]);

注意: 如果你想使用 Auth::user() 来获取当前认证用户,你需要在 bootstrap/app.php 文件中把 $app->withFacades() 方法的注释去掉。

当然,所有你希望认证的路由,都可以分配给 auth 中间件,所以你应该去掉 bootstrap/app.php 文件对 $app->routeMiddleware() 方法调用的注释:

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

本文章首发在 LearnKu.com 网站上。

本译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接
我们的翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。

原文地址:https://learnku.com/docs/lumen/5.5/user-...

译文地址:https://learnku.com/docs/lumen/5.5/user-...

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
贡献者:4
讨论数量: 0
发起讨论 只看当前版本


暂无话题~