ThinkPHP发生循环重定向问题

DaveLeeCN Asecret Engineer  2018-06-27 10:00:49
最近刚开始研究thinkPHP5.1,准备做个小项目练练手,现在定义了一个基类控制器,用来进行登录验证,代码如下:
namespace app\Index\controller;

use think\Controller;

class Base extends Controller
{
//登录验证
public function initialize()
{
if(!session('?user.id')) {
$this->redirect('index/login');
}
}
}

页面访问的时候就提示重定向次数过多,建议清除cookie,但是没用,我用phpserver查看了下请求,发现打开页面时确实产生了20个重定向跳转。
百度了一下,碰到这个问题的人一大堆,正儿八经提出解决办法的一个都没有,只有一个觉得说得有道理的:“详细点就是你的extends的文件作权限判断了,然后controller也做了权限判断,而且两个判断之间是彼此跳转的,所以才会出现上述问题,你检查下吧(来自百度知道:ThinkPHP redirect循环重定向是什么原因》”。
但是我检查了一下,我只有这一个位置进行了判断,没有重复判断。
所以我在想,有没有可能是哪个设置出了问题,有没有碰到过这个问题的,怎么解决的?
...全文
807 点赞 收藏 9
写回复
9 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
DaveLeeCN 2018-07-02
弄明白了,是我偷懒的问题,我把登录和登录后的首页全放到index控制器里面了,所以都继承了base,乱跳。
这几天忙其他事,结贴晚了,见谅。
回复
Mr丶Lennie 2018-06-30
你这个类是一个初始化的基类,而且你其中定义了initialize方法,这个是类的初始化方法,只要运行就一直会执行,然后其中你又添加了一个判断session的作用,这样说明,只要我一执行这个代码就需要判断session中这个值是否存在,只要存在就跳转。
if(!session('?user.id')) {
$this->redirect('index/login');
}
你这个Base类,是定义了一个基类,只要是这个基类衍生的子类初始化,就会调用Base中的initialize执行一次,这样你表面上看不到跳转执行,但是后台中会执行多次。比如说,你有一个class IndexController extends Base还有一个class newController extends Base,那么你使用这两个控制器的时候,都会调用Base中的initialize,从而进行重定向,你需要修改initialize中
if(!session('?user.id')) {
$this->redirect('index/login');
}
代码的位置,否则一直会重定向
回复
木秀猿林 2018-06-28
你登录的控制器有没有继承你的基类控制器?
回复
a20FB451FD 2018-06-27
登录代码贴出来看看
回复
xuzuning 2018-06-27
那么 session 是在哪里赋值的呢?
如果 session 不复制的话,自然就是死循环了
回复
DaveLeeCN 2018-06-27
引用 1 楼 xuzuning 的回复:
index/login 中都做了些什么?

只有一个return view();
回复
xuzuning 2018-06-27
index/login 中都做了些什么?
回复
xuzuning 2018-06-27
这个逻辑不对吧?
是不对,但是是你的不对!
if(!session('?user.id')) { 如果没有登录
$this->redirect('index/login'); 则跳到登录页,这并没有错
}
但是你说 登录页只有 return view();
而不去管登录的事情,那就大错特错了
回复
DaveLeeCN 2018-06-27
引用 3 楼 xuzuning 的回复:
那么 session 是在哪里赋值的呢?
如果 session 不复制的话,自然就是死循环了

我在登录模型中,验证完账号密码之后就设置session了。
那如果没有登录,直接访问页面,因为没有session,就直接循环重定向了?这个逻辑不对吧
回复
相关推荐
发帖
PHP
创建于2008-08-27

1.9w+

社区成员

“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
申请成为版主
帖子事件
创建了帖子
2018-06-27 10:00
社区公告
暂无公告