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/

相关推荐
那年窗外下的雪.12 小时前
AIDC 学习日志 第 04 天 BGP Underlay 基础与路由选择
服务器·学习·php
COOLMO研究AI14 小时前
Python 如何在 AI 接口中实现请求幂等性:防止重复提交与重复扣费
人工智能·python·php
西安景驰电子14 小时前
《PTP精确时间协议系列》第一篇:从原理到应用,全面解读IEEE 1588
linux·运维·服务器·开发语言·网络·windows·php
wavemap17 小时前
HyperPHP 免费主机无限流量
服务器·php
长江&后浪18 小时前
防火墙的描述
开发语言·网络·php
三84418 小时前
文件包含基础
php
qq_448011161 天前
C语言中的动态内存分配
c语言·开发语言·php
叠层归一研究院2 天前
AGI 系统(十一):二阶网络 — 二阶递归 × 多主体 (元符号网络)
开发语言·人工智能·算法·php·agi
数据知道2 天前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
江畔柳前堤2 天前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php