Laravel 5.2
新增了很多的新特性,包括了内置多用户认证、表单数组输入验证、隐式路由模型绑定、中间件组的定义、中间件 throttle
访问频率限制等主要功能。
即将发布的 Laravel 5.3
也新增了不少新的特性:全局辅助函数 cache()
、查询构造器 where / update
新增 JSON
属性操作语法、Blade
模板新增 $loop
变量、更简单的分页实现、图片尺寸验证规则等。Laravel 5.3
相对于 Laravel 5.2
变化有点大,简化了 app
的目录结构,并将路由分离出来。
本文主要介绍一下 Laravel 5.2
下使用 API Token Authentication
, Laravel 5.2
带有了 TokenGuard
类。你可以让用户的 api_token
追加到 API
请求的后面,并用 api_token
验证请求,分为 Laravel5.2
和 Laravel5.2
版本。
设置 api_token
字段并修改 User
模型
首先:
你要先给你的 users
表添加 api_token
的字段。
// Laravel5.2 和 Laravel5.3 一样
$table->string('api_token', 60)->unique();
如果你的项目刚创建,将上述的字段添加到 users_table migration
。
如果你的项目并不是新创建的,那么你可以去添加一个 migration
为 users
表添加 api_token
字段。
然后:
在 User
模型中的 $fillable
、$hidden
添加 api_token
字段
// Laravel5.2 和 Laravel5.3 一样
project $fillable = ['name', 'email', 'password', 'api_token'];
project $hidden = ['password', 'remember_token', 'api_token'];
用户创建时默认生成 api_token
由于 Laravel5.2
和 Laravel5.3
创建内置的用户认证目录结构不一样,所以:Laravel5.2
:只需在 App\Http\Controllers\Auth\AuthController
中的 create
方法添加:Laravel5.3
:则在 App\Http\Controllers\Auth\RegisterController
中的 create
方法添加:
//将此代码添加到创建用户的数组中
'api_token' => str_random(60)
添加相对应的路由
我们要确保我们所有的 API
都通过使用 auth:api
中间件保护。
Laravel5.2
:
//将此代码放置到路由中。
Route::group([
'prefix' => 'api',
'middleware' => ['api', 'auth:api']
], function () {
//Write Routes
});
Laravel5.3
:由于 Laravel5.3
已将 api
的路由单独分离出来,因此只需在 routes\api.php
中添加路由规则。路由组定义可以到 app\Providers\RouteServiceProvider
中的 mapApiRoutes
方法查看。
通过在 auth
中间件后添加 :api
,告诉 Laravel
我们想使用设置在 config/auth.php
下的 api
的 guard
和 默认为 token
任何在 API
路由组的路由,所有的请求都需要验证 api_token
。
获取 User
记录
// Laravel5.2 和 Laravel5.3 一样
Auth::guard('api')->user();
这样的写法是为了让 Laravel
知道,我们想调用的是 api guard
,而不是调用默认的 web guard
本文参照API Token Authentication in Laravel 5.2
更多请关注PIGJIAN BLOG