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/

相关推荐
IP搭子来一个2 小时前
代理IP是什么?有什么用?快速了解与使用指南
网络协议·tcp/ip·php
cq林志炫2 小时前
php 限流思路
redis·php·限流
无限码农4 小时前
2.1 网络编程 异步网络库zvnet
服务器·网络·php
小尔¥5 小时前
LNMP环境部署
运维·数据库·nginx·php
CRMEB7 小时前
电商项目中订单流程可以使用哪些设计模式?如何开发?
java·设计模式·gitee·开源·php·crmeb
代龙涛8 小时前
wordpress块主题之创建主题
php·wordpress
2401_873587828 小时前
Linux——高级IO
服务器·数据库·php
蜡台9 小时前
VSCode 配置PHP开发环境
ide·vscode·php·debug·launch.json
BingoGo9 小时前
在 PHP 中写真正的异步代码 TrueAsync 0.6.0 已支持数据库链接池
后端·php