emmmmm,发现一个问题;如果jwt过期时间设为2小时,则为绝对意义上的2小时,而不是用户无操作之后的2小时,这是为了保证token的安全,防止token被窃取后,一直使用,永远不过期。所以要用 JWTAuth::parseToken()->refresh() 刷新token,返回给前端;当然也可以设置无过期时间
jwt简单了解jwt全称json web token,是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519)。特别适用于分布式站点的单点登录(SSO)场景。
jwt认证流程
客户端表单提交用户认证信息发送到服务端
服务端验证用户信息,生成jwt(包括header,payload,signature),jwt的组成后面再具体研究
服务端返回token给客户端
客户端存储token,并在后续每次请求服务端时在Http请求的header中的Authorization中上送token,(也可不放在header中,但建议在header中上送,保证安全)
服务端收到请求,验证jwt,然后处理业务逻辑返回结果
jwt认证与session认证的优 ...
最近一直在面试,发现redis的知识还是太薄弱了,慢慢梳理一下。
redis为何物redis是基于内存的可持久化的key-value型数据库。
redis的优点
读写速度快
支持持久化(AOF,RDB两种方式)
支持事务
数据类型丰富(string,hash,set,zet,list)
支持主从,读写分离
redis的缺点redis数据类型
类型
数据类型
string
字符串,整数,浮点型
hash
有键值对的列表
set
字符串的无序集合,每个字符串都是唯一的
zet
有序集合,由浮点key和字符串值组成
list
list链式表,每个节点上都一个值
string
获取值 get key
设置值 set key
删除值 del key
自增 incr key
按值自增 incrby key
hash
设置值(可同时设置多个,空格分隔)hset key field1 [field2]返回入库条数
获取值hget key field,返回值
获取所有值hgetall key,返回所有键值
删除值(可同时删除过个)hdel key field1 [ ...
我的键盘好像是个留言簿,它在可见的未来将承载并记录我的一步步旅程;
告别了过去的三年,我没有挥一挥衣袖,不带走一片云彩,我,带走了小伙伴们教给我的无数知识和。。。。。emmm。。。。他们的的键帽(手动狗头),哈哈哈哈;
若干月之前,偶然和测试阿斌哥互换了一个F5的键帽。再后来斌哥去往了更宽广的舞台,键帽就这样保留了下来。直到今天再添一员大将。
感谢雲放同学的page down,也感谢斌哥的F5,感谢你们的键帽,让我的键盘不再只是个键盘。
大家以后都要加油啊,你们都棒棒哒。
今天sourcetree操作git,报错Fatal: Not a gitflow-enabled repo yet. Please run ‘git flow。记录一下解决方案。
问题!
解决打开项目下的.git/config文件,并删除所有gitflow的配置
删除后保存config,并重启sourcetree,重新点击git工作流=>初始化仓库!
重新执行之前报错的git操作,不再报错
项目中之前的小伙伴用的pdfh5.js,用起来有些许bug,于是乎准备使用pdf.js代替之
js下载点击pdf.js官网下载,本次使用的为 v2.7.570下载后保持结构不变移植到项目中
使用
本次使用iframe用法,其他用法略复杂,等以后再研究
在需要展示pdf的地方引用一下代码即可,官方已经封装好用法,即web目录下的viewer.html,在之后跟踪file参数接pdf地址即可,示例如下:
<iframe src="js/plugins/pdfjs/web/viewer.html'?file=http://tax-manage.test/storage/contract/test.pdf')}}" frameborder="0" width="100%" height="800px" id="iframe"></iframe>
效果图
签章展示签章报错然鹅,如上使用后pdf可展示了,but 电子签章不展 ...
今天工作中,需要从服务器打包个人的签约pdf文件回本地,从数据库拉出个人的身份证号码及对应的签约文件名,最后要实现将签约文件以身份证号命名,于是写了个小脚本拉一下;
保存身份证及文件名的对应关系文件如下
文件打包成zip//身份证及文件名一一对应的条件存储文件$txt_file = './condition.txt';//最后打包的zip包名$zip_name = './res.zip';//签约文件存储地址$dir = '/Volumes/PHP/tax-manage/public/downloads/';$zip = new ZipArchive();/* * open方法第一个参数是压缩或解压的文件 * open第二个参数,用ZipArchive::CREATE,若文件已存在,会继续添加,用ZipArchive::OVERWIRITE则会覆盖之前的zip包 * 传ZipArchive::CREATE时,若zip包不存在会自动创建 * 传ZipArchive::OVERWIRITE时,若zip包不存在,$zip- ...
github1. 在github中新建仓库并命名为 github用户名.github.io的仓库
2.新增token
保存好生成的 token,后面用于配置 travis-ci
3.新建一个hexo分支用于存储后面的项目(分支可以自定义,后面配置中保持一致即可)安装node.jsmac下载地址:https://nodejs.org/en/其他系统,请自行寻找,如不本地调试,node.js也可以不装
node.js我使用的12.21.0版本,最新版的node.js在hexo构建后会报错
(node:25044) Warning: Accessing non-existent property 'lineno' of module exports inside circular dependency(Use `node --trace-warnings ...` to show where the warning was created)(node:25044) Warning: Accessing non-existent property 'colu ...
php扩展
xlswriter:Excel 处理工具
opcodesio/log-viewer:laravel 的图像化日志
barryvdh/laravel-snappy:pdf 处理工具
SimpleSoftwareIO/simple-qrcode:二维码生成工具
mews/captcha:图片验证码
spatie/laravel-permission:rbac 权限管理
overtrue/laravel-lang:laravel 国际化
laravel/sanctum:laravel Api 授权
awobaz/compoships:laravel 多字段关联
anourvalar/eloquent-serialize:Eloquent 的 query 序列化
Intervention\Image:图片处理
overtrue/laravel-lang:laravel语言国际化
overtrue/laravel-query-logger:laravel Query sql ...