客户端与服务器端的认证方式(cookie,token,session)

■参照

=====

https://blog.csdn.net/sxzlc/article/details/103450258

9.客户端与服务器端的认证方式

=====

https://blog.csdn.net/qq_31201781/article/details/94575507

=====

最基本的方式,使用密码直接登录,这里就不说了

 

方式1:cookie

第一次访问的服务Web A生成一个sessionid并且存入cookie中。
第二次访问的是服务Web A,客户端会在cookie中读取sessionid加入到请求头中。

服务器端:
//s是一个stringbuilder变量  context
context.Response.Cookies.Add(new HttpCookie("CheckCode",s.ToString().ToLower()));

客户端:
function GetCookie(cookieName){
             var cookies=document.cookie.split(";");
             for(var i=0;i

●cookie保存位置

・win10 IE

C:\Users\userName\AppData\Local\Microsoft\Windows\INetCache

・win10 Microsoft Edge

C:\Users\userName\AppData\Local\Packages\Microsoft.MicrosoftEdge_8wekyb3d8bbwe\AC\#!001\MicrosoftEdge

  关于文件夹的显示还要设定(有两个设定)让其显示

           ・隠しフィル、隠しフォルダー、および隠しドライブを表示する。

           ・保護されたオペレーティングシステムファイルを表示しない。(推奨)

         隐藏受保护的系统文件  // 日文系统此选项在最下面

                客户端与服务器端的认证方式(cookie,token,session)_第1张图片

        显示之后,看到的缓存文件夹,cookie文件夹,但是没有找到cookie文件。。。

↓参照

https://blog.csdn.net/duke56/article/details/104009489

・chrome

C:\Users\userName\AppData\Local\Google\Chrome\User Data\Default\Cache

   看不出来那个是cookie文件。。。

 在这里面

C:\Users\sunxuezhi\AppData\Local\Google\Chrome\User Data\Default

    客户端与服务器端的认证方式(cookie,token,session)_第2张图片

 

Cookies实际上是一个sqlite数据库文件,可以直接打开查看:

客户端与服务器端的认证方式(cookie,token,session)_第3张图片

各个网站的cookie信息都在这里

↓参照

https://www.pianshen.com/article/29691564888/

Cookie的解密参考这篇文章: https://www.cnblogs.com/lrysjtu/p/4713250.html

●cookie文件的形式

【Cookie:userName@csdn.net/】

 

内容 (时代在发展)

Cookies are no longer stored in files.  Please use Internet*Cookie* APIs to access cookies.

打开cookie文件之后之后,显示如上内容。

告诉我们现在cookies不再保存在本地文件中,你需要通过http 相关的api才能查看cookies信息

↓参照

https://blog.csdn.net/u011541946/article/details/96320520

 

方式2:session

session :一直不变,客户端服务器端都有保存

           确认上一次的请求是不是你发送的

         (每一个session都有一个sessionId,生成的sessionId以Cookie的形式发送给客户端,

              浏览器下次再访问服务器端时,会带着cookie中的sessionId一起发送过去。)

■cookie・session

session 从字面上讲,就是会话。这个就类似于你和一个人交谈,
你怎么知道当前和你交谈的是张三而不是李四呢?
对方肯定有某种特征(长相等)表明他就是张三。

session 也是类似的道理,服务器要知道当前发请求给自己的是谁。
为了做这种区分,服务器就要给每个客户端分配不同的“身份标识”,
然后客户端每次向服务器发请求的时候,都带上这个“身份标识”,
服务器就知道这个请求来自于谁了。至于客户端怎么保存这个“身份标识”,
可以有很多种方式,对于浏览器客户端,大家都默认采用 cookie 的方式。

服务器使用session把用户的信息临时保存在了服务器上,
用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,
可是session有一个缺陷:如果web服务器做了负载均衡,
那么下一个操作请求到了另一台服务器的时候session会丢失。

■查看cookie

在浏览器地址栏输入javascript:alert (document. cookie)

// ↑ 要在当前打开的窗口中输入,才有效

// ↑ 直接复制的时候,冒号前面的内容会丢失 复制【javascript.alert (document. cookie)】把 "点" 改成 "冒号"

 

方式3:token

・token:根据算法,只是在某一个时间段内是不变的,服务器端不需要保存,每次通过计算得出的结果来验证

      (token不需要cookie,它是一个值,可以直接再客户端以文本的形式保存起来,

          在服务器端,也无需占用任何空间保存,因为Token是通过加密算法计算处理的一个值)

         // token是服务器端利用加密算法,计算处理的一个值

        // 再加密算法中,有可能会使用到客户端的机器信息,当前的时间等

        ---------------------

       // 本次SFDC连接中发现,很短的时间内(也就5分钟不到)

       //  两次执程序,进行连接处理,取得Token,取得的Token的值竟然是相同的。

      // 推测,SFDC侧,生成Token的算法,是和时间段有关系。

      ---------------------

         本次的SFDC类子中,就是保存了第一次建立连接后,得到的Token的值,

       当再次发起请求时,把token值也发送过去,

        服务器端会再次使用加密算法,再次进行计算,

        看看从客户端得到的Token值,和再次计算出来的Token值,是否匹配。)

使用 「curl -I URL  (这里的「I」要大写)获取Header信息,查看cookie中设定的sessionID

客户端与服务器端的认证方式(cookie,token,session)_第4张图片

通过以上这种方式取得的值,每次都是不同的

而,我们的浏览器,可以记住登陆状态,是我们浏览器端保存了,sessionID,每次sessionID都是相同的

客户端与服务器端的认证方式(cookie,token,session)_第5张图片

你可能感兴趣的:(服务器配置,网络相关,浏览器相关)