首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >TP框架中如何使用SESSION限制登录?

TP框架中如何使用SESSION限制登录?

作者头像
PM吃瓜
发布2019-08-12 17:31:18
9300
发布2019-08-12 17:31:18
举报
文章被收录于专栏:PM吃瓜(公众号)PM吃瓜(公众号)

之前总是被问题今天才明白,最高效的来做页面访问限制问题。OOP思想中的继承特性,实现验证,是否已经登录,不必每个页面都进行判断。实现如下:

继承Controller

CommonController

<?php /** * User:... */ namespace Home\Controller; use Think\Controller; /** * 通用控制器 * 主要用于验证是否登陆 以及 用户权限 * @package Home\Controller */ class CommonController extends Controller { /* 定义用户id */ public static $userid = ''; /** * 自动执行 */ public function _initialize() { // 判断用户是否登录 if (session('uid')) { $this->userid = session('uid'); } else { $this->error('对不起,您还没有登录,正跳转至登录面...', U('Login/login')); } } }


限制登录的页面

<?php namespace Home\Controller; use Think\Controller; /** * 首页控制器 * @package Home\Controller */ class IndexController extends CommonController { /** * 此处直接继承commonController 系统首页 */ public function index(){ // 获取当前账户的登录信息 $info = M('users')->field('loginnum')->where(array('id' => parent::$userid))->find(); $this->assign('info', $info); $this->assign('SERVER_SOFTWARE', $_SERVER['SERVER_SOFTWARE']); $this->display(); } }


今天项目有个需求就是,需要在两个应用模块,假如是home和admin两个模块,要求同一个账户,帐号密码保存在session中,如果没有登陆过home,只登陆过admin,那么在跳转home应用下的控制器应该跳转到登陆界面。 这就需要设置session的前缀了。 下面是代码 我用的是tp5.0框架,可以直接进行session初始化用session函数。 session([ 'prefix' => 'index', 'type' => '', 'auto_start' => true, ]); session([ 'prefix' => 'index', 'type' => '', 'auto_start' => true, ]); 这两个前缀不一致,访问的时候是这样访问的:$_SESSION['index']['id']; 这样就有了index前缀的session数组。打印出来看是 这样检测各应用下的id就可以知道,当前有没有登陆过该应用。 session([ 'prefix' => 'index', 'type' => '', 'auto_start' => true, ]); //设置前缀放在设置session之前 session('id', $data['ID']); session('Account', $data['Account']); session('AccountType', $data['AccountType']); session('AuthoriezdModules', $data['AuthoriezdModules']); setcookie('Account',$data['Account'],time()+3600*24*31,"/"); setcookie('password',$condition['Pwd'],time()+3600*24*31,"/"); // myLog(session('id'),__LINE__);die; // myLog($_SESSION['index']['id'],__LINE__);die; // setcookie('remember',$remember,time()+3600); // 保存3个小时 $lifeTime = 3600*3; setcookie(session_name(), session_id(), time() + $lifeTime, "/");

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-05-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Tech爬虫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档