thinkphp5如何在控制登陆权限的时候,在cookie里添加token参数

thinkphp5框架里在用户登录后,要给前端web浏览器一个token字符串,如果用ajax请求的方式每个请求都加个单独的参数token,这种方式只能限制接口,如果是请求的一个页面,那这个页面是没有办法携带这个token参数的,这种情况就要用cookie了。后台登陆成功 的时候,设置一个cookie,值为token,那么浏览器所有的请求就都会携带这个cookie,后台取出这个cookie做校验就行了。

一下是代码

登录校验,成功后,告诉浏览器保存token到cookie

简化版:

php 复制代码
    public function login(){
		//token 存入 Cookie(页面请求)
        cookie('token', $token, 3600 * 24 * 7); // 7 天有效期
	}

真实代码,包含了session校验:

php 复制代码
    public function login(){
		//token 存入 Cookie(页面请求)
        cookie('token', $token, 3600 * 24 * 7); // 7 天有效期
        //保存操作员的信息到session
        session('operatorid',$operator['id']);
        session('shop_id',$shop['shop_id']);
	}

拦截请求,登陆校验的时候

简化版:

php 复制代码
    public function _initialize()
    {
        // 1. 调用父类初始化
        parent::_initialize();
        
        // 从 Cookie 获取 Token
        $token = cookie('token');

        $shoplogin = Db::name('tbshoplogin')->where('token', $token)->find();

        if (!$shoplogin) {
            $this->redirect('webpc/login/index');
        }


    }

真实代码,包含其他情况,接口参数和session校验:

php 复制代码
    public function _initialize()
    {
        // 1. 调用父类初始化
        parent::_initialize();
        // 从 Cookie 获取 Token
        $token = cookie('token');
        if(!$token){
            // 获取路由参数或 GET/POST 参数
            $token = input('token');
        }

        $shoplogin = Db::name('tbshoplogin')->where('token', $token)->find();

        if (!$shoplogin||Session::get('shop_id')=='' || Session::get('operatorid')=='') {
            $this->redirect('webpc/login/index');
        }


    }

免费在线工具网站 https://mantools.top/

相关推荐
柒星栈33 分钟前
PHP 源码怎么加密防破解?三套方案实战指南
开发语言·php·android studio
小小代码狗1 小时前
SQLi-Labs 基础注入实战教程(Less-1 ~ Less-5and Less-9)
服务器·python·php
shencz20002 小时前
在windows10里的apache2.4加php7.2的环境下上安装Laravel5.8框架
php·laravel
TlSfoward20 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
—Miss. Z—1 天前
计算机二级MySQL——简单应用题(存储过程&存储函数)
数据库·oracle·php
故乡de云1 天前
AWS 添加付款方式失败排查清单:卡片、银行风控与账号状态逐项定位
开发语言·php
梦梦代码精1 天前
基于ThinkPHP6 + Vue3的家政预约系统全解析:从LBS定位到自动派单的完整实现
java·docker·开源·php·代码规范
郑州光合科技余经理1 天前
家政O2O平台解析:从0搭建上门预约小程序解决方案
android·java·开发语言·前端·小程序·架构·php
lxw18449125141 天前
PHP后端(CI框架方向)面试题库,分为基础必问、MySQL、Redis、工程运维、高阶加分、场景实操六大模块,适配该JD全部考点,附带标准答案
ci/cd·面试·php
郑州光合科技余经理1 天前
家政预约小程序后端源码深度剖析:支付回调实战
java·开发语言·前端·git·小程序·架构·php