背景
在开发中。 创建了一个 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
评论 (0)