背景
公司处在前后端分离的转折阶段,作为后端人员,要找到一个适用于接口验证的方式,公司仍保持后端使用Laravel框架,而laravel框架默认的是【web】方式,web 方式是使用 session 来进行用户认证,当然也是可以使用,但是有一定的不安全,经过调研,主流使用的Token验证方式。
介绍JWT
JWT资料
JWT:全称Json Web Token,是一种规范化的token。可以理解为对token这一技术提出的一套规范,是在RFC 7519中提出的。
安装JWT
我也是很醉,composer安装它的时候,我真的是走一步一个错呀。。。。
先打开官方指导文档,就能看见laravel installation,完美呀
composer require tymon/jwt-auth
但是我执行,就遇到了各种问题,以下是整理好的问题以及解决办法
composer第一错:内存不足
PHP Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
Fatal error: Allowed memory size of 1610612736 bytes exhausted (tried to allocate 4096 bytes) in phar:///usr/local/bin/composer/src/Composer/DependencyResolver/RuleWatchGraph.php on line 52
在composer官网有很多解决办法,说一下我常用的两种方法
- 方法一:临时修改缓存
在使用composer require时,命令前加上COMPOSER_MEMORY_LIMIT=-1
COMPOSER_MEMORY_LIMIT=-1 composer update
- 方法二:修改php.ini文件
一看就知道这个修改后,永久有效。
1.首先查看当前homestead中php版本,来确定要修改哪个版本的php.ini文件
php -v
2.进入php7.2目录,找到php.ini并修改
sudo vim /etc/php/7.2/cli/php.ini
composer第二错:镜像
异常信息如下:
Warning from https://mirrors.aliyun.com/composer: You are using an outdated version of Composer. Composer 2.0 is now available and you should upgrade. See https://getcomposer.org/2
这只是个警告,但是还是处理一下吧
使用阿里云的镜像,配置如下:
- 方法一:全局配置
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config -g --unset repos.packagist
- 方法二:仅当前项目配置
composer config repo.packagist composer https://mirrors.aliyun.com/composer/
取消配置:
composer config --unset repos.packagist
调试
composer -vvv require alibabacloud/sdk
添加-vvv是为了查看详细的安装信息,其中就可以看到使用了新配置的镜像域名去加载依赖包
composer第三错:安装包与当前php版本冲突
报错信息:
Your requirements could not be resolved to an installable set of packages.
Problem 1
- mockery/mockery 1.4.2 requires php ^7.3 || ^8.0 -> your PHP version (7.2.22) does not satisfy that requirement.
- mockery/mockery 1.4.2 requires php ^7.3 || ^8.0 -> your PHP version (7.2.22) does not satisfy that requirement.
- mockery/mockery 1.4.2 requires php ^7.3 || ^8.0 -> your PHP version (7.2.22) does not satisfy that requirement.
- Installation request for mockery/mockery (locked at 1.4.2, required as ^1.3.1) -> satisfiable by mockery/mockery[1.4.2].
从这里可以看出是php版本不对,虽然我没有指明要安装 **mockery/mockery **
这个扩展,那他应该是依赖的,竟然php版本不符合,那就切换到适合的php版本下,单独composer这个依赖,之后再composer JWE。
解决步骤如下:
- 切换到合适的php版本
sudo update-alternatives --config php
- 下面就是安装依赖包,然后安装JWT,具体的命令就不赘述了。
写在最后
解决完上面的问题,我终于将这个jwt扩展搞下来了,万里长征第一步也迈出去了。
这里真的是提高解决问题的能力,假如说composer require失败的时候,也可以手动更新composer.json文件,然后执行composer update命令。