thinkphp3.2 AuthBehavior.class中,使用session无效原因分析
PHP

thinkphp3.2 AuthBehavior.class中,使用session无效原因分析

依然范儿特西
2022-12-01 / 0 评论 / 14 阅读 / 正在检测是否收录...

背景

在开发中。 创建了一个 AuthBehavior.class 在做全局的权限验证, 里边会读取session, admin_id, 结果是读取失败

原因

在AuthBehavior.class这个类中,使用session的时候,session_start()还没有执行,所以无法读取;

过程分析:

关于 behavior 文件加载,程序执行过程大概是这样

index.php -> 应用开始(app_begin)标签位侦听并执行绑定行为 -> session启动 -> 控制器开始(action_begin)标签位侦听并执行绑定行为

解决办法

第一种: 修改tags.php文件

'app_begin' => array('Behavior\AuthBehavior'),
 修改为
'action_begin' => array('Behavior\AuthBehavior'),

第二种: 偏方:

在index.php就启用session_start();
但是这样有一个问题,就是配置文件里面的那些改变session配置的参数可能及不起作用了(例如session前缀 SESSION_PREFIX)

提示:session函数位置 ThinkPHP\Common\functions.php

参考文章:

https://www.kancloud.cn/manual/thinkphp/1704

1

评论 (0)

取消