84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
应该属于比较菜的一个问题,就是我在处理前后端的时候,需要判断是否存在session来确定用户是否登录。
但是我通过文档看到的办法只能自己在每个页面都引入一次判断,然后进行其他操作,不过肯定有更简单的办法来处理这个事,自己实在是研究不出来了,请大神帮忙!
主要就是如何能一次设置,然后让制定目录下的页面都判断是否登录,从而方便下一步的操作
第一種引用訪問:將所有session判斷驗證寫在一個類裡面。在每一個控制器裡創建前置控制器方法或者初始化控制,在方法裡面直接引用session類的登錄驗證方法。第二種繼承:就是每個控制器都繼承session驗證類,這樣每次訪問控制器都繼承session所有類與方法,在session類設置初始化控制,作為session的登錄驗證
個人推薦第二種,因為不需要在每個控制器裡面初始化控制器,減少代碼便於維護
写一个基类如Base.php,通过其_initialize来实现,如:
Base.php
_initialize
<?php namespace app\admin\controller; use think\Controller; class Base extends Controller{ public function _initialize(){ $uid = session('uid'); if($uid == null){ $this->rediect('Login/index','请先登录后操作'); } } }
其中Login.php不能继承Base.php,否则需要另外的特殊判断,如:
Login.php
<?php namespace app\admin\controller; use think\Controller; class Login extends Controller{ public function _initialize(){ $uid = session('uid'); if($uid != null){ $this->rediect('Index/index','已登录'); } } }
我也是小白一枚,只是有个想法,可以在登录存储session之后,在后端写一个判断session的公共方法,然后在需要目录下面嗲用这个方法,这样就不需要在每个目录下面都去判断了!
只是个人想法,没有实践啊!
写一个验证中间件(行为),然后在路由里调用,可以任意指定哪些页面需要调用这个验证的中间件.
可以看下手册里行为那一部分
不用每个页面引入判断啊,你把所有的控制器继承一个公共的控制器,在公共的控制器写一次session判断就可以了
第一種引用訪問:將所有session判斷驗證寫在一個類裡面。在每一個控制器裡創建前置控制器方法或者初始化控制,在方法裡面直接引用session類的登錄驗證方法。
第二種繼承:就是每個控制器都繼承session驗證類,這樣每次訪問控制器都繼承session所有類與方法,在session類設置初始化控制,作為session的登錄驗證
個人推薦第二種,因為不需要在每個控制器裡面初始化控制器,減少代碼便於維護
写一个基类如
Base.php
,通过其_initialize
来实现,如:其中
Login.php
不能继承Base.php
,否则需要另外的特殊判断,如:我也是小白一枚,只是有个想法,可以在登录存储session之后,在后端写一个判断session的公共方法,然后在需要目录下面嗲用这个方法,这样就不需要在每个目录下面都去判断了!
写一个验证中间件(行为),然后在路由里调用,可以任意指定哪些页面需要调用这个验证的中间件.
可以看下手册里行为那一部分
不用每个页面引入判断啊,你把所有的控制器继承一个公共的控制器,在公共的控制器写一次session判断就可以了