很多企业做项目使用前后端分离,后端提供接口地址,前端使用接口地址拿数据,并渲染页面。那么,前端用户登录如何使用接口进行认证?网上各种教程写的不堪入目,完全看不懂,所以我根据自己的理解,写下此篇文章,希望能帮助到大家。
后端(Laravel5.6框架)
1、使用 composer
安装 Passport
,打开终端,执行命令:
composer require laravel/passport #安装完成后,在composer.json文件中会看到文件版本信息
2、接下来,将 Passport
的服务提供者注册到配置文件 config/app.php
的 providers
数组中
Laravel/Passport/PassportServiceProvider::class,
3、执行数据库迁移
php artisan migrate #数据库中会生成接口认证所需的5张表
4、创建密码授权客户端
php artisan passport:client --password#创建了client_id和client_secret,前端登录验证的时候必须把这两个玩意儿带着
5、获取keys
php artisan passport:keys
6、配置路由
打开服务提供者 AuthServiceProvider
, 在 boot
方法中加入如下代码:
use Laravel/Passport/Passport;public function boot() { $this->registerPolicies(); Passport::routes(); //接口认证的路由}
然后将配置文件 config/auth.php
中授权看守器 guards
的 api
的 driver
选项改为 passport
我这里的 customer
表是前端用户表,但是 laravel
默认的是 user
表,所以这里需要做如下配置:
'guards' => [ 'web' => [ 'driver' => 'session', 'provider' => 'users', ], 'api' => [ 'driver' => 'passport', 'provider' => 'customers', ],],
'providers' => [ 'users' => [ 'driver' => 'eloquent', 'model' => App/User::class, ], 'customers' => [ 'driver' => 'eloquent', 'model' => App/Models/Shop/Customer::class, ],],
7、注册中间件,在 app/Http/Kernel.php
文件中的 $routeMiddleware
数组中添加如下中间件
protected $routeMiddleware = ['client.credentials'=>/Laravel/Passport/Http/Middleware/CheckClientCredentials::class,];
然后在需要认证接口路由文件 routes/api.php
前面加上这个中间件。
Route::group(['prefix' => 'cart', 'middleware' => ['client.credentials']], function () { ...});
8、前端用户表 customer
模型里面做如下配置:
use Illuminate/Foundation/Auth/User as Authenticatable;use Laravel/Passport/HasApiTokens;class Customer extends Authenticatable{ use HasApiTokens; .... }
新闻热点
疑难解答