酷站(www.ku0.com)-致力于为互联网从业者提供动力!

热门关键词:  企业  as  baidu  c4rp3nt3r  美女
【阿里云】采购季上云仅¥223/3年

Laravel实现ApiToken认证请求方法

来源:互联网搜集 作者:秩名 人气: 发布时间:2019-10-14
本篇文章主要介绍了Laravel实现ApiToken认证请求方法,对大家的学习或者工作具有一定的参考学习价值,感兴趣的小伙伴们可以参考一下,也感谢大家对酷站(ku0.com)的支持。

1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 migration 文件, 我们需要更改 user 表的结构

2.我们需要为 user 表添加 api_token 字段, 也就是说我们的 token 是保存在数据库中的, 在合适的位置, 添加一行
 

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

3.配置好数据库, 通过 php artisan migrate 命令生成 user 表

4.在user表中, 随便添加一条记录, 只要保证 api_token 这个字段设置为 123456 即可. 这样我们就生成了一个用户, 等下就可以 使用 123456 这个token 值来登录了.

5.返回到 路由文件 routes.php, 在里面添加一条测试路由, 并将其 用 laravel 的中间件保护起来
 
 
Route::group(['middleware' => ['auth.api']], function () { 
 Route::get('/t', function () {
  return 'ok';
 });
});

在此处, 使用的是 auth.api 中间件,中间件定义入下图:



在Middleware文件创建WebToken.php,然后在Kernel.php文件中注册该中间件

 
'auth.api' => AppHttpMiddlewarewebToken::class,

6.打开刚刚创建的webToken中间件代码如下

<?php
 
namespace AppHttpMiddleware;
 
use Closure;
use IlluminateSupportFacadesAuth;
 
class webToken
{
 /**
  * Handle an incoming request.
  *
  * @param IlluminateHttpRequest $request
  * @param Closure $next
  * @return mixed
  */
 public function handle($request, Closure $next)
 {
  if (Auth::guard('api')->guest()) {
   return response()->json(['code' => 401,'msg' => '未设置token']);
  }
 
  return $next($request);
 }
}

代码中的Auth::guard(‘api')的api是config文件夹里auth.php文件



7.做了以上修改之后, 当我们以 /t 这个 url 路径向服务器直接发起请求时, 服务器就会返回一个 401 错误, 并且会返回一条 ‘未设置token' 这样的消息, 这也是我们之前在 handle() 方法中设置的. 也就是说 /t 已经被我们的 auth 中间件保护起来了. 如果想要我们的请求能够正常通过这个中间件, 就要提供 token.

8.由于我们之前在 user 表中添加了一条 api_token 为 123456 的数据, 所以现在我们再次向服务器请求 /t, 但是这次我们加入 api_token, 也就是

…/t?api_token=123456

正常情况下, 服务器就会返回 ‘ok' 了, 这也就是说明, auth 中间件允许这个请求通过. 而当我们把 123456 修改为其他值时, 这个请求也是无法通过 auth 中间件的。
版权声明:本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 959677720#qq.cn(#换@) 举报,一经查实,本站将立刻删除。
原文链接:https://blog.csdn.net/weixin_43488988/article/details/83383911

相关文章

  • TP5框架实现签到功能的方法

    TP5框架实现签到功能的方法

    基于tp5 模型的一个签到功能; 由于存储所有的签到日期数据库会非常庞大,所以签到日期只存储近三个月的。 具体功能: 1、记录最近一次的签到时间 2、每次签到都会添加15积分 3、有连续签到的记录 CREATE TABLE `sp_sign` ( `id` int(11)......
    04-05
  • TP5框架实现一次选择多张图片并预览

    TP5框架实现一次选择多张图片并预览

    点击选择图片(可选多张),确定后将选择的图片显示在页面上,已经选择的图片也可以删除,点击提交将图片提交给后台。 1、效果图 2、code 用input标签并选择type=file,记得带上multiple,不然就只能单选图片了 如果不想通过 ajax 提交,一......
    04-04
  • 使用Entrust扩展包在laravel中实现RBAC的功能的方法

    使用Entrust扩展包在laravel中实现RBAC的功能的方法

    想要在Laravel中使用Entrust,首先需要通过Composer来安装其依赖包: composer require zizaco/entrust 5.2.x-de 安装完成后需要在config/app.php中注册服务提供者到providers数组: Zizaco\Entrust\EntrustServiceProvider::class, 同时......
    03-17
  • Laravel框架下的Contracts契约详解

    Laravel框架下的Contracts契约详解

    Contracts Laravel 的契约是一组定义框架提供的核心服务的接口, 例如我们在介绍用户认证的章节中到的用户看守器契约IllumninateContractsAuthGuard 和用户提供器契约IlluminateContractsAuthUserProvider以及框架自带的App\User模型所实......
    03-17
  • YII2框架中behavior行为的理解与使用方法的介绍

    YII2框架中behavior行为的理解与使用方法的介绍

    YII2中的行为说白了就是对组件功能的扩展,在不改变继承关系的条件下。 行为附加到组件后,行为将注入自已的方法和属性到组件,可以像组件访问自定义的方法和属性一样访问行为。 注意行为是对功能的扩展,不要乱用行为,比如有一个动物类......
    03-14
  • PHP代码加密方法的介绍

    PHP代码加密方法的介绍

    如何保护自己的PHP代码: 代码混淆+加密 实际加密算不上,具体实现思路就是把代码base64加密,然后对base64里的字符串进行字符串映射(随机生成字典混淆)然后eval执行 这种百分之百能被破解还原 代表代码如下: ?php function RandAbc($......
    03-14
  • YII2框架中验证码的简单使用方法

    YII2框架中验证码的简单使用方法

    验证码的使用是比较频繁的。YII2中已经帮我们做好了封装。 首先我们在控制器里创建一个actions方法,用于使用yii\captcha\CaptchaAction ?php namespace app\controllers; use YII;use yii\web\Controller; class IndexController extend......
    03-12
  • php实现账号不能同时登陆的方法【当其它地方登陆时,当前账号失效

    php实现账号不能同时登陆的方法【当其它地方登陆时,当前账号失效

    解决的思路是每当用户登陆时我们必需记录当前的用户id和session_id,如果有人在其它地方用此账号登陆时,我们把此用户id对应的session_id的session文件删除,并重新记录当前的session_id。那么之前的用户就失效了。 login.php代码如下: ......
    03-05
  • php输出缓冲Output Control的用法

    php输出缓冲Output Control的用法

    关于php的输出缓冲,首先要说明的是什么是缓冲(buffer),比如我们通过记事本在编辑文件的时候,并不是我们输入了内容,系统就会立刻向磁盘中写入数据。 只有我们在保存文件后,系统才会向磁盘写入数据。而之前我们输入的内容全部保存在了......
    03-03
  • php使用html5 XHR2实现上传文件与进度显示功能的方法

    php使用html5 XHR2实现上传文件与进度显示功能的方法

    思路:只要我们知道上传文件的总大小,还有上传过程中上传文件的大小,那么就可以实现进度显示了。 在html5中,XMLHttpRequest对象,传送数据的时候,progress事件用来返回进度信息。 它分成上传和下载两种情况 1.下载的progress事件属于......
    03-03

最新更新