用户认证

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

用户认证

介绍

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

开始

认证服务提供者

注意: 在使用 Lumen 的认证功能前,请对 bootstrap/app.phpAuthServiceProvider 的调用取消代码注释。

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

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

需要强调的一点是,你可以在闭包里做任何你需要的用户认证的操作,例如说从 $request 的标头信息中取到 API 请求令牌,或者接受一个 _token 的表单传参,或者使用任何你想要的认证方法。

获取已认证的用户信息

可以通过 Auth facade 来访问认证的用户。也有另外一种方法可以访问认证过的用户,就是通过 Illuminate\Http\Request 实例,请注意类型提示的类会被自动注入:

use Illuminate\Http\Request;

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

    $user = $request->user();

    //
}]);

注意: 如果你想要使用 Auth::user() 来获取当前用户的话,你需要把 bootstrap/app.php 里对 $app->withFacades() 的调用 「取消代码注释」。

你需要把 bootstrap/app.php 里对 $app->routeMiddleware() 的调用 「取消代码注释」,然后你就可以在路由中使用 auth 中间件 了。

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

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

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~