失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 请问thinkphp 怎么在每个方法里面判断是否登录?

请问thinkphp 怎么在每个方法里面判断是否登录?

时间:2022-05-02 04:16:30

相关推荐

请问thinkphp 怎么在每个方法里面判断是否登录?

后端开发|php教程

thinkphp,php

后端开发-php教程

[tp版本3.2.3]

我在Controller里面写了一个公共类CommonController.class.php,写了一个构造方法来判断是否登录,没登录就重定向到登陆页:

手游站源码下载,vscode打断点调试,ubuntu .gz解压,tomcat7.06配置,爬虫追星,php项目详解,不错的seo加盟项目,php 网站更新,色情广告短信模板lzw

redirect(Login/index); return; } else { session(islogin, $isLogin); // 如果登录刷新一下?不知道是不是这样去刷新,因为可能出现登录了后过期的情况。 } }}

这样做有一个问题,就是没有登录的时候始终会重定向。报错127.0.0.1 将您重定向的次数过多。

于是我改成了

mvc框架源码,vscode镜像设置,查看ubuntu声卡驱动,停止 tomcat,sqlite 字符分列,服务器在公司 备案,web地图插件,前端主流框架分页,爬虫高清图片,一起学php,seo外包服务专家,app网站模板下载不了,添加 网页 回车,ecshop模板代码修改,前端网站页面模板下载,动易网站管理系统下载,木马帝国程序lzw

class CommonController extends Controller{ public function isLogin() { $isLogin = session(islogin); if (!$isLogin) { $this->redirect(Login/index); return; } else { session(islogin, $isLogin); // 如果登录刷新一下?不知道是不是这样去刷新 } }}

接着在其它继承CommonController的文件每一个都去加一个构造函数,如

ArticleController.class.php

.net个人博客源码,vnc官网ubuntu,tomcat查询启动情况,网吧电脑爬虫,php项目测试,百度移动seo首选帝搜软件lzw

show("hallo world"); }}

报错提示:

Call to a member function display() on null错误位置FILE: X:\domainX\ThinkPHP\Library\Think\Controller.class.php LINE: 69

最后这样写才不报错:

show("hallo world"); }}

问题:

为什么继承CommonController.class.php的类也不能再__construct里面判断呢?

继承CommonController.class.php的类如果都要判断是否登录,就需要在每一个方法里面写parent::isLogin();,这样做合理吗?还是说这样做本来就是合理的?

回复内容:

[tp版本3.2.3]

我在Controller里面写了一个公共类CommonController.class.php,写了一个构造方法来判断是否登录,没登录就重定向到登陆页:

redirect(Login/index); return; } else { session(islogin, $isLogin); // 如果登录刷新一下?不知道是不是这样去刷新,因为可能出现登录了后过期的情况。 } }}

这样做有一个问题,就是没有登录的时候始终会重定向。报错127.0.0.1 将您重定向的次数过多。

于是我改成了

class CommonController extends Controller{ public function isLogin() { $isLogin = session(islogin); if (!$isLogin) { $this->redirect(Login/index); return; } else { session(islogin, $isLogin); // 如果登录刷新一下?不知道是不是这样去刷新 } }}

接着在其它继承CommonController的文件每一个都去加一个构造函数,如

ArticleController.class.php

show("hallo world"); }}

报错提示:

Call to a member function display() on null错误位置FILE: X:\domainX\ThinkPHP\Library\Think\Controller.class.php LINE: 69

最后这样写才不报错:

show("hallo world"); }}

问题:

为什么继承CommonController.class.php的类也不能再__construct里面判断呢?

继承CommonController.class.php的类如果都要判断是否登录,就需要在每一个方法里面写parent::isLogin();,这样做合理吗?还是说这样做本来就是合理的?

public function _initialize() { $allow_actions = explode(,,C(ALLOW_ACTIONS)); //配置哪些操作无需登录即可访问,比如登录,验证登录 $curr_action = MODULE_NAME . . . CONTROLLER_NAME . . . ACTION_NAME; if(!in_array($curr_action,$allow_actions) && !is_login_admin()) { //未登录且是需要登录后访问的 $this->redirect(Admin/Public/login); } }

别在公共类里重定向,公共类里只判断是不是登陆,返回true或false,然后根据返回的结果操作。

你写在程序入口啊

另外写一个登陆的Guestcontroller,不要继续自commonController,直接继承Controller就行了,这样未登陆前的或退出登陆由guest的Guestcontroller来处理。登陆后全部由commonController的子类来处理。

思路

在CommonContrller 的__construct中做登录验证,记着__construct中一定要parent::__construct

然后每个控制器继承这个Common,当然除了你的Login控制器,它继承的是Think 下面的Controller

就这样,你可以试试

Login控制器不继承,公用控制器只判断,不写登陆,不就好了吗?

如果觉得《请问thinkphp 怎么在每个方法里面判断是否登录?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。