API Token认证

Laravel 提供了一个简单的API Token认证机制,这与username与password没什么不同:有一个单一的token分配给每个用户,客户端可以传递一个请求来验证该用户的请求。

API令牌机制并不像OAuth 2.0那样安全,因此在决定使用它之前,请确保您知道它适合您的应用程序。 因为只有一个令牌,它几乎就像一个密码 - 如果有人获得该令牌,他们就可以访问您的整个系统。 同时,它也可以安全,因为你可以强制令牌不容易被猜测出来,并且你可以在最小的代价下擦除和重置令牌,而这是密码无法做到的。

因此,令牌API身份验证可能不适合您的应用; 但如果是的话,实施起来就不会那么简单了。

首先,在users表中添加一个60个字符的唯一api_token列:

$table->string('api_token', 60)->unique();

接着,更新创建新用户的方法,并确保它为每个新用户为此字段设置一个值,Laravel有一个助手用于生成随机字符串,因此如果您想使用它,只需为每个字符串将字段设置为str_random(60)。如果要将此添加到实时应用程序中,还需要为先前存在的用户执行此操作。

想要用认证包装路由,请使用auth:api路由中间件,如13-41所示

Example 13-41. Applying the API auth middleware to a route group
Route::prefix('api')->middleware('auth:api')->group(function () {
//
});

请注意,由于您使用的是除标准防护之外的身份验证防护,因此您需要在使用auth()方法时指定防护.

$user = auth()->guard('api')->user();