Dingo + Laravel + JWT + Entrust + memcache 实现API设计

2023-11-08

Dingo + Laravel + JWT + Entrust + memcache 实现API设计

Dingo Api 是一个为laravel设计的用于API开发的开源包,规范和简化了Api的设计

JWT 即 Json Web Token,是一种新的用于API认证方式,区别于传统的Session和Cookie方式,便于携带而且比较安全,因为token只设计为单次请求

Entrust 是一套基于角色的权限管理系统,用于分层系统设计

Memcache 是一个NoSQL存储系统,使用键值对将数据存储在内存中,实现快速访问

DingoApi 安装及使用

https://github.com/dingo/api

  1. 安装
//项目基本目录下执行
composer require dingo/api:1.0.x@dev
//config/app.php
'providers' => [
    Dingo\Api\Provider\LaravelServiceProvider::class
]
//发布配置文件
php artisan vendor:publish --provider="Dingo\Api\Provider\LaravelServiceProvider"
  1. 配置
//配置可以卸载.env文件中或者config/api.php
API_STANDARDS_TREE=vnd //api 标准
API_SUBTYPE=myapp  //项目短名称
API_PREFIX=api
API_DOMAIN=api.myapp.com   //这里记住API_PREFIX或者API_DOMAIN通知只能配置一个,或的关系,访问的时候通过 http://127.0.0.1:8000/api/your_route 或者 http://api.myapp.com/your_route
API_VERSION=v1
API_NAME="My API" //在.env文件中一定要注意不能有多余的空格,负责出现莫名的错误,如果写成API_NAME=My API就会出错
API_CONDITIONAL_REQUEST=false 
API_STRICT=false //如果配置为真,将需要在每次访问api是添加Accept头:application/vnd.myapp.v1+json
API_DEFAULT_FORMAT=json //api返回格式
API_DEBUG=true //API调试
  1. 认证方式

认证方式我们采用JWT方式,关于JWT可以自行谷歌,其他的配置请参考dingo/api 文档

'auth' => [
        'jwt' => 'Dingo\Api\Auth\Provider\JWT',
    ],

JWT认证方式

https://github.com/tymondesigns/jwt-auth

  1. 安装
composer require "tymon/jwt-auth:0.5.*"
//添加服务
'Tymon\JWTAuth\Providers\JWTAuthServiceProvider'
//添加alias
JWTAuth' => 'Tymon\JWTAuth\Facades\JWTAuth'
//发布配置文件
php artisan vendor:publish --provider="Tymon\JWTAuth\Providers\JWTAuthServiceProvider"
//生成jwt:key
php artisan jwt:generate
  1. 配置,请参考文档,没什么好说的
  2. 创建token

token可以基于任何传入的数据创建,不过我们一般使用从用户创建token,如:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dingo + Laravel + JWT + Entrust + memcache 实现API设计 的相关文章

  • 使用“INSERT ... ON DUPLICATE KEY UPDATE”插入多条记录

    我的表结构 table marks 我的目标 我想用条件插入或更新多条记录 我目前正在通过此查询进行检查 第一步 SELECT FROM marks WHERE student 115 AND param 1 第二步 if records
  • PHP 正则表达式匹配字符串的最后一次出现

    我的字符串是 text1 A373R12345 我想找到该字符串最后出现的非数字数字 所以我使用这个正则表达式 0 9 然后我得到这个结果 1 A373 2 12345 但我的预期结果是 1 A373R 它有 R 2 12345 另一个例子
  • 如何更改codeception phpbrowser/mink超时

    我正在尝试使用代码接收创建测试 以检查页面在高负载的情况下是否正常工作 不幸的是 如果页面负载非常高并且测试开始 我会收到这样的错误 Codeception Exception ModuleConfig Codeception Util M
  • PHP 从命令行启动 gui 程序,但 apache 不启动

    首先 我阅读了有类似问题的人的一些帖子 但所有答案都没有超出导出 DISPLAY 0 0 和 xauth cookies 这是我的问题 提前感谢您的宝贵时间 我开发了一个小库 它使用 OpenGL 和 GLSL 渲染货架 过去几天我将它包装
  • 如何在 CakePHP 中“验证”人名?

    我有一个 PHP 脚本 应该检查 有效 的人名 但最近破解了带有空格的名称 因此我们向验证器添加了空格 除了这样做之外 有没有办法向 CakePHP 的验证器添加黑名单以阻止所有 无效 字符 而不是允许 有效 字符 注意 我 通常 知道如何
  • div 中的文本字符有限,添加“阅读更多”链接并在单击链接时显示所有字符

    我有一个 div 里面有文本 使用 PHP 和 MySQL 显示 结构如下 div class description p Here is a lot of text p div 我想在 p 标签内的文本超过 100 个字符时显示 阅读更多
  • 如何从脚本中创建新的 Joomla 用户帐户?

    我们正在为 Joomla 创建一个 XML API 允许合作伙伴网站在我们的网站上为其用户创建新帐户 我们已经创建了一个独立的 PHP 脚本来处理和验证 API 请求 但现在我们需要实际创建新帐户 我们最初只想进行 CURL 调用来提交注册
  • PHP DOM - 剥离 span 标签,保留其内容

    我希望采用如下标记 span class test Some text that is strong bolded strong and contains a a href link a span 并在 PHP 中找到剥离跨度的最佳方法 剩
  • 显示和随机化 php 数组

    我有一个显示结果的数组 如下所示 Array 0 gt 71 1 gt 56 2 gt 64 3 gt 82 4 gt 90 5 gt 80 6 gt 65 7 gt 62 8 gt 14 9 gt 3 我的代码是 while row my
  • Composer 无法获取 github

    今天 我尝试通过运行来安装 Laravelcomposer create project laravel laravel 5 1 myproject prefer dist我收到此错误 Could not fetch https api g
  • json_encode 返回 NULL?

    由于某种原因 项目 描述 返回NULL使用以下代码 这是我的数据库的架构 CREATE TABLE staff id int 11 NOT NULL AUTO INCREMENT name longtext COLL
  • PHP 脚本不断执行 mmap/munmap

    我的 PHP 脚本包含一个循环 它只不过是回显和取消引用指针 如 tab othertab i gt 中的内容 直到昨天 这个脚本开始变得非常慢 比以前慢了 50 倍 之前 它一直运行良好 使用 strace 后 我发现 90 的情况下 脚
  • 使用 yum 和 pear 安装 php-soap 均失败

    我正在尝试在 Centos 6 4 服务器上安装 PHP 的 SOAP 扩展 我对包管理器 从 CLI 安装包并在 PHP 中配置它们相当不熟悉 我相当有能力管理 php ini 和其他 PHP 配置文件 soap ini 等 我尝试使用以
  • php date_parse("2010 年 2 月") 给出日期 == 1

    当没有日期时 我将其称为 date parse 中的错误 d date parse Feb 2010 会给 d day 1 请参阅对此的评论date parse 手册页 http php net manual en function dat
  • PHP LDAP 查询获取特定安全组的成员

    我正在努力让 LDAP 查询工作来为我提供安全组的成员 我们的活动目录结构设置为 DC domain DC co dc uk然后 我们有一个名为 公司用户 的 OU 其中有一个用于 IT 和标准的 OU 在这些中我们创建了用户 所以我被设置
  • 在 PHP 中接受带有小数点和千位分隔符的国际数字

    对于用户可以输入能量值来计算相应费用的在线计算器 我需要 PHP 脚本来接受各种用户输入 200 万又四分之一焦耳 的值可以输入为 2000000 25 默认表示法 2 000 000 25 带千位分隔符 2000000 25 逗号作为小数
  • PHP 共享标头而不使用服务器端脚本?

    到目前为止我总是通过 PHP 解决简单的问题 您有一个包含页眉 菜单 页脚和内容字段的网站 每个页面的页眉 菜单和页脚通常是相同的 在没有 PHP 或任何其他服务器端语言的情况下 如何使页眉 菜单和页脚数据仅存在于一个文件中 例如 您不会有
  • 通过身份验证保护 CodeIgniter 2 应用程序的正确方法是什么?

    I have Ion Auth http benedmunds com ion auth 正确安装并在我的服务器上运行 我也有默认的代码点火器2 新闻 教程在同一个 CI 安装中工作 我只是在玩 并对使用身份验证系统 封闭 或保护整个应用程
  • 为什么这评估为 true

    为什么这评估结果为真
  • PHP条件,如果当前页面,则链接突出显示[关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有一个带

随机推荐

  • 运维常用的shell命令.md

    1 后台启动脚本 nohup start sh gt dev null 2 gt 1 dev null代表linux的空设备文件 所有往这个文件里面写入的内容都会丢失 俗称 黑洞 2 gt 1错误输出2重定向到标准输出1 意思是标准输出和错
  • 这10种赚钱方法,用手机就可以做,看看哪种适合你?

    现在很多人都想着做第二职业 也就是兼职赚钱 即使能够赚个零花钱也不错 今天给大家分享10个可以利用自己的空闲时间 可以赚到钱的办法 一部手机就能操作的赚钱方式 看看哪一种适合你 只要你有网络主播这一方面的才能 很多网络直播平台都会按照主播的
  • matlab坐标污染物浓度,基于MATLAB城市空气质量评价体系.doc

    基于MATLAB城市空气质量评价体系 基于MATLAB城市空气质量评价体系 本文针对大气污染问题 采用动态加权综合评价方法建立了合理的空气质量评价模型 同时 采用灰色关联度分析方法和BP神经网络模型较好地研究了空气质量和气象参数之间的关系
  • 深度解密Go语言之context

    Go 语言的 context 包短小精悍 非常适合新手学习 不论是它的源码还是实际使用 都值得投入时间去学习 这篇文章依然想尝试全面 深入地去研究 文章相比往期而言 整体不长 希望你看完可以有所收获 什么是 context Go 1 7 标
  • IDEA如何搭建Maven(安装&下载&配置)

    https www cnblogs com xihehua p 9639045 html 1 下载 Maven 压缩包 https maven apache org Use Download gt Files Binary zip arch
  • Linux 递归修改文件时间日期

    在操作 Linux 系统时 发现文件时间总是出现错误 在文件时间超越系统时间时 在执行文件时 就有可能出现错误 查看文件时间 stat test txt 修改一个文件的时间 touch d 2020 11 11 11 00 00 test
  • 【Bugs】解决报错CondaValueError- prefix already exists

    Bugs CondaValueError prefix already exists 1 问题情景 在conda create n ur env name python 3 7的时候报错 WARNING A directory alread
  • Unity游戏性能分析最终指南 02

    设置每帧时间预算 帧率 fps 并不是衡量游戏稳定体验的理想指标 考虑以下情况 在运行时的前0 75s内渲染了59帧 然后接下来的1帧需要0 25s才能渲染完毕 虽然是60fps 但实际上会让玩家感觉卡顿 这是需要设置帧时间预算的重要原因之
  • 数据分析师从业必问的5个问题~

    写在前面 经常有小伙伴问船长一些数据分析从业的问题 类似如何转行 毕业如何择业 如何学习成为数据分析师 今天就抽空总结了一下大家入行数据分析的问题 基本囊括在以下5个问题中 下面5个问题将解答你的困惑 也可能在后续的面试中问到 另外我为你准
  • 23062QTday2

    完善登录框 点击登录按钮后 判断账号 admin 和密码 123456 是否一致 如果匹配失败 则弹出错误对话框 文本内容 账号密码不匹配 是否重新登录 给定两个按钮ok和cancel 点击ok后 会清除密码框中的内容 继续进行登录 如果点
  • CondaValueError: Malformed version string ‘~‘: invalid character(s)

    创建python3 6环境 conda create n py36 python 3 6 anaconda和 升级conda环境 conda update conda和conda upgrade n base c defaults over
  • Unity3DAI行为------避开障碍物简单实现

    public float speed 20 0f public float mass 5 0f public float force 50 0f public float minimumDistToAvoid 20 0f private f
  • 键盘的测试点

  • ajax tottenham,Tottenham end Ajax dream in injury-time, reach first Champions League final

    Video PlayerClose AMSTERDAM May 9 Xinhua Tottenham Hotspur set up a Champions League final against Liverpool after beati
  • Netty介绍(一)————为什么使用Netty

    Netty的简单介绍 Netty 是一个 NIO client server 客户端服务器 框架 使用 Netty 可以快速开发网络应用 例如服务器和客户 端协议 Netty 提供了一种新的方式来使开发网络应用程序 这种新的方式使得它很容易
  • 记一次arm交叉编译的cmake写法

    1 背景 用cmake交叉编译高通4G模组Linux应用代码 2 问题 之前都是参考网上各种所谓的cmake交叉编译写法 例如某乎上config cmake是这样写的 set CMAKE SYSTEM NAME Linux set TOOL
  • vue2的文档

    三 Vue 2 1 Vue 基础 1 环境准备 安装脚手架 npm install g vue cli g 参数表示全局安装 这样在任意目录都可以使用 vue 脚本创建项目 创建项目 vue ui 使用图形向导来创建 vue 项目 如下图
  • C 修改文件或文件夹的权限,为指定用户 用户组添加完全控制权限

    分享一下我老师大神的人工智能教程 零基础 通俗易懂 http blog csdn net jiangjunshow 也欢迎大家转载本篇文章 分享知识 造福人民 实现我们中华民族伟大复兴 C 修改文件或文件夹的权限 为指定用户 用户组添加完全
  • 阿里一道Java并发面试题 (详细分析篇)

    说明 前天分享了一篇关于阿里的 Java常见疑惑和陷阱 的文章 有人说这个很早就有了 可能我才注意到 看完之后发现内容非常不错 有几个我也是需要停顿下想想 题目 我个人一直认为 网络 并发相关的知识 相对其他一些编程知识点更难一些 主要是不
  • Dingo + Laravel + JWT + Entrust + memcache 实现API设计

    Dingo Laravel JWT Entrust memcache 实现API设计 Dingo Api 是一个为laravel设计的用于API开发的开源包 规范和简化了Api的设计 JWT 即 Json Web Token 是一种新的用于