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/

相关推荐
不正经的小寒3 小时前
PHP 8.4 核心特性
php
不正经的小寒5 小时前
PHP 8.3 核心特性
php
安妮的小熊呢8 小时前
CRMEB开源商城系统 & 标准版系统(PHP)开发规范
开发语言·javascript·php
在角落发呆9 小时前
跨越网络鸿沟:传统文件传输与现代内网穿透的奇妙交响
开发语言·php
minji...11 小时前
Linux 网络基础之网络IP层(十)IP 协议,网段划分,IP地址相关问题
linux·运维·服务器·网络·tcp/ip·智能路由器·php
枫叶林FYL12 小时前
【强化学习】2 大规模并行强化学习中的耦合策略优化:受控多样性驱动的样本高效探索
开发语言·php
zb2006412012 小时前
Laravel 8.x新特性全解析
php·laravel
code monkey.13 小时前
【Linux之旅】Linux 网络基础全解析:从协议分层到 Socket 编程,构建高性能网络服务的底层基石
linux·网络·php
我命由我1234513 小时前
PHP - PHP 基本随机数生成函数
开发语言·ide·后端·java-ee·php·intellij-idea·intellij idea
我命由我1234513 小时前
PHP - PHP 简易 Web 服务器、基础接口开发
服务器·开发语言·前端·php·intellij-idea·idea·intellij idea