yii2 和 php (反)序列化踩坑

今天写 yii2 的 RBAC 应用,打算简单修改原有关于角色的记录,就能切换到新的权限,然后出现了这么个错误:

  • unserialize(): Error at offset 36 of 127 bytes

排除了权限结构(权限名称、角色名称、使用的 authManager 类型)问题之后,我想是记录角色的数据改得出问题了。原来记录的权限数据如下:


  • O:30:”console\rbac\ProfileAccessRule”:3:{s:4:”name”;s:14:”viewOwnProfile”;s:9:”createdAt”;i:1460293714;s:9:”updatedAt”;i:1460293714;}

既然是序列化了的数组,那么原始的数组中,不论下标或值,序列化后均以值(字符串)的形式出现,它们的下标都是自己的长度(所以也解释了O:30 指的是 console\rbac\ProfileAccessRule 这几个词共有30个字母,而以数字表示的不需标出其长度,如 i:1460293714;)。解决方法就很简单了,主要是序列化格式的问题。修改后的权限记录如下:


  • O:28:”console\rbac\AdminAccessRule”:3:{s:4:”name”;s:10:”visitAdmin”;s:9:”createdAt”;i:1460293714;s:9:”updatedAt”;i:1460293714;}

写代码这事,也就是搞清楚到底里面是个啥,再从工作步骤上一个个推敲出来囖~

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值