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/

相关推荐
2501_944521594 小时前
Ramda 跨端三方库仓颉适配全流程
开发语言·javascript·flutter·php
漠月瑾-西安5 小时前
PHP曝出两个严重RCE漏洞:CVE-2026-109618、CVE-2026-109619技术分析与修复指南
网络安全·php·漏洞分析·漏洞修复·远程代码执行
大文说跨境11 小时前
亚马逊多店铺的图片素材怎么批量去重:EXIF 与哈希的处理流程
开发语言·php
上海运维Q先生11 小时前
PHP8.3.36升级修复手册----CVE-2026-109618 CVE-2026-109619
运维·php
2401_8858850412 小时前
芬兰语音通知接口怎样对接?语音提醒接入流程
android·前端·python·php·语音识别
Flynt15 小时前
PHP 9.2 分 RCE 的补丁比公告早公开 3 天,我读完 389 个文件的 diff,也把"死在代码之前"跑了出来
安全·php·源码
萌动的小火苗15 小时前
MQTT的QoS0、QoS1、QoS2有什么区别?
开发语言·网络·python·php·信息与通信
silvamux_15 小时前
10款模型写“君幸食”讲解词:统一事实档案与逐款审校
开发语言·php
Smoothcloud润云16 小时前
GPU远程纳管节点频繁离线?心跳、DNS与时钟排障实战
运维·服务器·开发语言·人工智能·php·gpu算力
ESDWAN17 小时前
企业访问海外系统很慢,如何一步步定位问题?
服务器·网络·php