博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel5.4 Api Token认证
阅读量:7236 次
发布时间:2019-06-29

本文共 2454 字,大约阅读时间需要 8 分钟。

本片文章,我们将使用前后端分离的 API token 认证机制,使用Token可以解决API的无状态认证机制。

问题

api.php中接口使用中间件 middleware('auth:api')权限验证会出现问题:

clipboard.png

// 请求Api urlRoute::post('question/follower', function(Request $request){    $followed = \App\Models\Follow::where('question_id', $request->get('question'))                 ->where('user_id', $request->get('user'))                 ->count();    if($followed)    {        return response()->json(['followed' => true]);    }   return response()->json(['followed' => false]);})->middleware('auth:api');

根据错误提示,需要给api接口进行权限的验证,具体步骤可看下边:

一、给用户表users增加api_token字段

php artisan make:migration add_api_token_to_users --table=users

Created Migration: 2017_03_21_235545_add_api_token_to_users

在生成的迁移文件中添加字段:

string('api_token', 64)->unique(); }); } /** * Reverse the migrations. * * @return void */ public function down() { Schema::table('users', function (Blueprint $table) { $table->dropColumn(['api_token']); }); }}

然后使用下面的命令将字段添加到表中:

php artisan migrate

clipboard.png

二、用户注册时,需生成一个api_token

App\Http\Controllers\Auth\RegisterController.php文件的创建用户中添加 api_token 字段;

/**     * Create a new user instance after a valid registration.     *     * @param  array  $data     * @return User     */    protected function create(array $data)    {        $user =  User::create([            'name'     => $data['name'],            'email'    => $data['email'],            'avatar'   => '/images/avatars/default.png',            'phone'    => '',            'confirmation_token' => str_random(40),            'password' => bcrypt($data['password']),            'api_token' => str_random(60),   // api_token认证        ]);        $this->sendVerifyEmailTo($user);        return $user;    }

最后,不要忘记在 App\User.php用户模型表中的 $fillable 属性当中添加api_token字段:

/**     * The attributes that are mass assignable.     *     * @var array     */    protected $fillable = [        'name', 'email', 'password','avatar','confirmation_token','phone','api_token'    ];

三、使用

有关token认证的原理,我们可以看该目录下的底层方法:

vendor\laravel\framework\src\Illuminate\Auth\TokenGuard.php

1.重写resource\assets\js\bootstrap.js认证方法:

/*  // API token 认证-【20170321】window.axios.defaults.headers.common = {    'X-CSRF-TOKEN': window.Laravel.csrfToken,    'X-Requested-With': 'XMLHttpRequest'};*/window.axios.defaults.headers.common = {    'X-CSRF-TOKEN': window.Laravel.csrfToken,    'Authorization': window.Laravel.apiToken};

2. app.blade.php中增加api_token 判断


相关文章:

转载地址:http://magfm.baihongyu.com/

你可能感兴趣的文章
基于Solr的空间搜索
查看>>
给vmware的Linux虚拟机添加硬盘
查看>>
XMOVE3.0手持终端——软件介绍(三):在2KB内存的单片机上实现的的俄罗斯方块 (原创)...
查看>>
Kafka实战-Storm Cluster
查看>>
Spring中bean的范围
查看>>
JavaScript实现自适应窗口大小的网页
查看>>
跟我一起数据挖掘(5)——数据类型
查看>>
DIV 拖动效果高级篇
查看>>
SQL SERVER 2012链接到SQL SERVER 2000的问题解决案例
查看>>
Web性能--TCP的构成
查看>>
(十七)java冒泡排序和compareto
查看>>
linux内存查看方式
查看>>
Java魔法堂:String.format详解-
查看>>
线性重复动画
查看>>
炒冷饭系列:设计模式 建造者模式
查看>>
BAT解密:互联网技术发展之路(2)- 业务如何驱动技术发展
查看>>
bat脚本自动扫描制定文件夹下shp文件,并导入数据库,然后执行空间操作
查看>>
关于AsyncHttpClient的cz.msebera.android.httpclient.Header
查看>>
Codekit - 为Web前端打造的全能型神器(附推荐各种工具)
查看>>
JSP JSTL SQL标签操作数据库
查看>>