api 认证
原理
- 注册:用户注册成功后,随机生成长字符串作为 token,原生 token 返回给用户。哈希后的 token 存到数据库里。
- 登陆:用户使用账号密码登陆成功,随机生成长字符串作为 token,原生 token 返回给用户。哈希后的 token 存到数据库里。
- 认证:将用户传来的 token 进行哈希,然后取数据库中查找哈希后的 token ,找到了就认证成功,否则失败。
创建项目与配置
composer create-project --prefer-dist laravel/laravel laravel6
php artisan migrate
添加 api_token 字段,可空,唯一,默认 null。(可直接修改,也可以创建下面的代码片段然后迁移)
Schema::table('users', function ($table) {
$table->string('api_token', 80)->after('password')
->unique()
->nullable()
->default(null);
});
php artisan migrate
我们的例子还需要设置 email 可为空,因为我们以用户名作为认证的依据
设置模型可以操作 api_token 字段
# App\User.php
protected $fillable = [
'name', 'email', 'password', 'api_token',
];
修改 api_token 这个名称
如果修改字段名称 api_token,请记得改配置文件 config/auth.php 中的 stroage_key
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' => false,
'storage_key' => 'api_token',
],
guard 设置为 api,hash 设置为 true
// config/auth.php
'defaults' => [
'guard' => 'api', // 默认 api 认证
'passwords' => 'users',
],
'api' => [
'driver' => 'token',
'provider' => 'users',
'hash' =