PHP在控制器中怎么添加token验证,具体代码 谢谢

PHP在控制器中怎么添加token验证,具体代码 谢谢,第1张

 //获得token

    private function getToken(){

        $tokenName  = C('TOKEN_NAME',null,'__hash__')

        $tokenType  = C('TOKEN_TYPE',null,'md5')

        if(!isset($_SESSION[$tokenName])) {

            $_SESSION[$tokenName]  = array()

        }

        // 标识当前页面唯一性

        $tokenKey   =  md5($_SERVER['REQUEST_URI'])

        if(isset($_SESSION[$tokenName][$tokenKey])) {// 相同页面不重复生成session

            $tokenValue = $_SESSION[$tokenName][$tokenKey]

        }else{

            $tokenValue = is_callable($tokenType) ? $tokenType(microtime(true)) : md5(microtime(true))            

            $_SESSION[$tokenName][$tokenKey]   =  $tokenValue

            if(IS_AJAX && C('TOKEN_RESET',null,true))

                header($tokenName.': '.$tokenKey.'_'.$tokenValue) //ajax需要获得这个header并替换页面中meta中的token值

        }

        return array($tokenName,$tokenKey,$tokenValue) 

    }

PHP curl 请求中添加 Authorization token

经过测试用一下方式设置 header 参数,可以成功获取数据

curl 参数设置如下:

curl请求方法

背景知识:

首先,互联网应用大多使用http协议,而HTTP是无状态(stateless)协议。什么是无状态:就是每一次通信都不会保留本次回话的信息,常说鱼的记忆只有七秒,http的记忆是0秒。

但是大多数应用都是需要保留每次的会话信息的,所以就有了cookie和session。他们是用来保持HTTP连接状态的技术。

1.Session

我们可以把客户端浏览器与服务器之间一系列交互的动作称为一个 Session。

Session就是一种保存上下文信息的机制,它是针对每一个用户的,变量的值保存在服务器端。

浏览器第一次访问服务器时会创建一个session对象并返回一个JSESSIONID=ID的值,创建一个Cookie对象key为JSSIONID,value为ID的值,将这个Cookie写回浏览器

2.Cookie

cookie是浏览器保存在用户电脑上的一小段文本,通俗的来讲就是当一个用户通过 http访问到服务器时,由服务器端生成,发送给User-Agent(一般是浏览器),服务器会将一些 Key/Value键值对返回给客户端浏览器(存储在客户端)。对应的内容可以再浏览器的Applicationh中看到。

在这里插入图片描述

Cookie在生成时就会被指定一个Expire值,这就是Cookie的生存周期,在这个周期内Cookie有效,超出周期Cookie就会被清除。有些页面将Cookie的生存周期设置为“0”或负值,这样在关闭浏览器时,就马上清除Cookie,不会记录用户信息,更加安全。

session是基于Cookie技术实现,重启浏览器后再次访问原有的连接依然会创建一个新的session,因为内存中的Cookie在关闭浏览器后就会消失,但是原来服务器的Session还在,只有等到了销毁的时间会自动销毁,下次登入的时候直接读取cookie缓存文件进行匹配。

如果浏览器端禁用了Cookie,那么每次访问都会创建一个新的Session,但是我们可以通过服务器端程序重写URL即可,如果页面多连接多,会增加不必要的工作量,

那可以强制让你用户开启接收Cookie后再让其访问即可。

3.Headers

Headers包括请求头和响应头,可以在浏览器的每一个请求中看到。

请求头:它是 HTTP 头的一种,它可在 HTTP 请求中使用,并且和请求主体无关。某些请求头如 Accept、Accept-、 If-允许执行条件请求。某些请求头如:Cookie, User-Agent 和 Referer 描述了请求本身以确保服务端能返回正确的响应。

响应头:与请求头类似,不过是接口返回数据的时候,由服务器设置的,比如里面会带上,服务器想要设置的一些cookie信息。然后交由服务器写入到客户端。

在这里插入图片描述

4.Token

Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需带上这个Token前来请求数据即可,无需再次带上用户名和密码。token可以设置在cookie或者headers中,都可以。

5.公参

顾名思义就是公共参数,一般会放在headers中,让所有请求都带上这个参数,服务器会对他做一些处理。比较常用的比如:会在headers中设置app的版本,用于服务器进行接口的版本兼容。

打开CSDN APP,看更多技术内容

如何给session添加cookie、headers_BRUIN.的博客

next=%2F',headers=headers)# 获取cookiescookies=r.cookiesprint(headers)print(cookies)print('-'*100)session=requests.Session()# 将获取的cookies添加到sessionsession.

继续访问

...代理、伪装headers和session)、json、selenium_RipperAaron赵冠智的...

(4)伪装---请求头headers和session登录 2、json---loads和dumps 3、selenium 1、requests (1)get import requests url = "http://www.baidu.com" response = requests.get(url) if response.status_code == 200: print(response...

继续访问

Session、Cookie、Token区别与用法

本文的组织脉络如下 Cookie 和 Session HTTP 协议是一种无状态协议,即每次服务端接收到客户端的请求时,都是一个全新的请求,服务器并不知道客户端的历史请求记录;Session 和 Cookie 的主要目的就是为了弥补 HTTP 的无状态特性。 Session 是什么 客户端请求服务端,服务端会为这次请求开辟一块内存空间,这个对象便是 Session 对象,存储结构为C...

继续访问

Spring session调研(Cookie、Token)

在大部分时候,我们在讨论API的设计时,会从功能的角度出发定义出完善的、易用的API。而很多时候,非功能需求如安全需求则会在很晚才加入考虑。而往往这部分会涉及很多额外的工作量,比如与外部的SSO集成,Token机制等等。对该安全需求,一般有如下方案:• 基于session的认证鉴权• 基于token的认证鉴权基于session由于HTTP协议本身是无状态的,服务器需要某种机制来区分每个请求。比...

继续访问

session的一些参数含义_疯子vs年华的博客_session参数

import requests s=requests.Session() #设置session对象的auth属性,用来作为请求的默认参数 s.auth=('user','pass') #设置session的headers属性,通过update方法,将其余请求方法中的headers属性合并起来作为最终的请求方法的headers s.head...

继续访问

python中header参数_python保持session和cookies以及header带参数访问站 ...

在headers中带参数访问站点实例s =requests.Session() s.auth = ('user', 'pass') s.headers.update({'x-test': 'true'}) # both 'x-test' and 'x-test2' are sent s.get('http://www.xoxxoo.com/headers', header...

继续访问

JavaScript系列—cookie,session,token等

前言 之前整理过cookie,session,token,但发现还是云里雾里,今天读了几篇经典的文章,彻底的弄清楚这个东西。 首先我们需要知道,这三个东西的为了解决什么问题 HTTP是一种无状态的协议,而服务器端的业务必须是要有状态的, 为了分辨链接是谁发起的,需自己去解决这个问题。不然有些情况下即使是同一个网站每打开一个页面或者 APP 每次进入也都要登录一下。 而 Session 、...

继续访问

彻底搞懂Cookie、Session、Token到底是什么

Cookie 洛:大爷,楼上322住的是马冬梅家吧? 大爷:马都什么? 夏洛:马冬梅。 大爷:什么都没啊? 夏洛:马冬梅啊。 大爷:马什么没? 夏洛:行,大爷你先凉快着吧。 在了解这三个概念之前我们先要了解HTTP是无状态的Web服务器,什么是无状态呢?就像上面夏洛特烦恼中经典的一幕对话一样,一次对话完成后下一次对话完全不知道上一次对话发生了什么。如果在Web服务器中只是用来管理...

继续访问

Python爬虫学习第四天---requests模块-session_lufei0920的博客-CSDN博 ...

实例在请求了一个网站后,对方服务器设置在本地的cookie会保存在session中,下一次再使用session请求对方服务器的时候,会带上前一次的cookie session = requests.session() # 实例化session对象 response = session.get(url, headers, .....

继续访问

计算机网络学习笔记五、Cookie、Session和Token_皮卡猴的博客...

  Token相比Session来说,是使用CPU来换取内存的一种会话跟踪策略。 3.1. JWT   JWT全称JSON Web Token,本质上就是一段文本信息。JWT由三段信息构成,将三段文本信息用符号.来链接在一起就构成了JWT字符串。JWT三段信息代表三...

继续访问

session、cookie、token的区别?

session、cookie、token的区别?

继续访问

爬虫中requests模块中session的实战应用

本文以学习通为例,来实际应用session(没有学习通的小伙伴可以自己去找一个登录页面,但要尽量找一个表单数据(下面提到了)没有变化的来实验,因为简单) 1.首先我们新建隐身窗口(无痕模式)进入学习通登录页面的网址: https://passport2.chaoxing.com/login?loginType=4&newversion=true&fid=129838&newversion=true&refer=http://ysdxaqjy.aqjy.chaoxing.c

继续访问

php session header,php session header()重定向后丢失 - php_Reinha...

$_SESSION['username'] = $userheader("Location: /~klemeno/vaja10?" . SID)exit} 当浏览器重定向我时,我尝试像这样回显会话: if(isset($_SESSION['username'])){ echo $_SESSION['username']...

继续访问

php session header,PHP接口跨域header头以及Session跨域方法_何瑫的博 ...

ini_set('session.cookie_domain', '.a.com')然后在header('Access-Control-Allow-Origin: ' . $_SERVER['HTTP_ORIGIN'])下面加上 header('Access-Control-Allow-Credentials: true')...

继续访问

cookie、session、token介绍以及区别

背景介绍 什么是会话? 用户打开一个浏览器, 点击多个超链接, 访问服务器多个web资源, 然后关闭浏览器, 整个过程称之为一个会话 HTTP协议是一种"无状态"协议,客户浏览器与服务器建立连接,发出请求,得到相应,然后关闭连接,这意味着每次客户端检索网页时,客户端打开一个单独的连接到 Web 服务器,服务器会自动不保留之前客户端请求的任何记录。 所以容器不能辨认下一个请求和之前的请求是不是同一个请求,对于容器而言,每个请求都是新的。 使用浏览器与服务器进行会话的过程中,不可避免会产生一些数据, .

继续访问

html如何给header添加token,将Token添加到请求头Header中

概述在使用JSON Web Token作为单点登录的验证媒介时,为保证安全性,建议将JWT的信息存放在HTTP的请求头中,并使用https对请求链接进行加密传输,效果如下图所示:问题1.由于项目是前后端分离的,不可避免的就产生了跨域问题,导致Authorization始终无法添加到请求头中去,出现的请求如下图所示:    原因:理论请看这篇文章:(点这里),简单来说就是,当在进行跨域请求的时候,如...

继续访问

【软件测试基础】:http和https,get和post,session、cookie和token 区别

【软件测试基础】:http和https,get和post,session、cookie和token 区别 1、http和https的区别 (1)https需要CA申请证书,一般免费证书较少,因而需要一定费用。 (2)http是超文本传输协议,信息是明文传输(数据传输); https则是具有安全性的ssl(secure sockets Layer安全套接层)加密传输协议; (3)http端口是80;...

继续访问

在vue中封装axios,可在headers里面带token

先来看一下装好的axios源码 import axios from 'axios' import { Message } from 'iview' // 统一请求路径前缀 // // const base = '/crdp'// const base = '/ccma-server/api' // 服务器地址/ const base = '/api' // 本地// // 超时设定 a...

继续访问

Cookie、session和token的区别(token和session对比选型)

分清楚JWT,JWS与JWE 一篇文章带你分清楚JWT,JWS与JWE 参考URL: https://blog.csdn.net/weixin_37569048/article/details/86677165

继续访问

最新发布 登录鉴权方案中,session、token、cookie三者的区别及选择

目前web常用的登录鉴权方案主要有3种,分别是session、token、cookie,每种方案都有其特定应用场景和局限性,本文主要针对几种方案的使用特点简单做一个对比分析。阅读本文,首先需要对以上三者的概念和基本原理有基础了解,如不然,建议先详细了解一下上述三种方案的实现原理。另除了上述三种方案外,localStroage作为前端的存储方式之一,实际可以简单理解为一个小型前端key-value数据库,由于不直接参与前后端交互且不影响登录鉴权,不在本文讨论范围内。...

继续访问

为什么cookie和token都存放在header中,我们建议使用token?

说这个原因之间,我们需要先了解一下什么叫CSRF。 CSRF 中文翻译过来就是跨站请求伪造(英语:Cross-site request forgery) 是一种挟制用户在当前已登录的Web应用程序上执行非本意的 *** 作的攻击方法。跟跨网站脚本(XSS)相比,XSS利用的是用户对指定网站的信任,CSRF 利用的是网站对用户网页浏览器的信任。 感觉又不得不说XSS了。 XSS 叫跨站脚本攻击...

继续访问

热门推荐 session、cookie和token的区别

下面详细介绍一下session、cookie、token的区别,详细如下: 1.session和cookie区别: ·数据存放位置不同:Session数据是存在服务器中的,cookie数据存放在浏览器当中。 ·安全程度不同:cookie放在服务器中不是很安全,session放在服务器中,相对安全。 ·性能使用程度不同:session放在服务器上,访问增多会占用服务器的性能;考虑到减轻服务器性能方面,应使用cookie。

继续访问

cookie放在请求头_面试必问:session,cookie和token的区别

点击上方蓝字关注我们 !session,cookie和token究竟是什么简述cookie,session,token作为面试必问题,很多同学能答个大概,但是又迷糊不清,希望本篇文章对大家有所帮助http是一个无状态协议什么是无状态呢?就是说这一次请求和上一次请求是没有任何关系的,互不认识的,没有关联的。这种无状态的的好处是快速。cookie和session由于http的无状态性,为了使...

继续访问

Header和Cookie相关内容

前请提要? 相信很多同学都对HTTP的header和cookie,和session都有疑问,因为我们开发的时候一般都需要请求网络获取数据,有时候还需要带cookie或者带特殊的字段发起请求。 现在我们就来简单的了解一下这个过程。 1、首先,header包含cookie和session,编码,协议类型,返回类型,提交的参数,客户端信息等等等等。 2、header包括response he

继续访问

什么是请求参数、表单参数、url参数、header参数、Cookie参数?一文讲懂

最近在工作中对 http 的请求参数解析有了进一步的认识,写个小短文记录一下。 回顾下自己的情况,大概就是:有点点网络及编程基础,只需要加深一点点对 HTTP 协议的理解就能弄明白了。 先分享一个小故事:我至今仍清晰地记得大三实习时的第一个工作任务,我需要调用其他部门提供的 api 去完成某项业务。 那个 api 文档只告诉了我请求参数需要传什么,没有提及用什么方式传,比如这样: 其实如果有经验的话,直接在请求体或 url 里填参数试一下就知道了;另一个是新人有时候不太敢问问题,其实只要向同事确认一下就

继续访问

cookie放在请求头_详解 Cookie,Session,Token

前言无状态的HTTP协议很久很久之前, Web基本都是文档的浏览而已。既然是浏览, 作为服务器, 不需要记录在某一段时间里都浏览了什么文档, 每次请求都是一个新的HTTP协议,就是请求加响应。不用记录谁刚刚发了HTTP请求, 每次请求都是全新的。如何管理会话随着交互式Web应用的兴起, 像在线购物网站,需要登录的网站等,马上面临一个问题,就是要管理回话,记住那些人登录过系统,哪些人往自己...

继续访问

Cookie和header的联系

最近在深入学习HTTP相关知识,遇到Cookie和header的概念,为了清除的区分开,特地查询资料,做如下整理 header header说白了就是消息头,它包括了request header请求头和response header响应头。 cookie 百度其中文名为(储存在用户本地终端上的数据),Cookie作为一种标识符,由服务器端创建,存储在浏览器客户端。 Cookie与Header的联系 header包含了cookie和session,编码,协议类型,返回类型,提交的参数,客户端信息等。 消息头中

继续访问

session.headers


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11485784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存