精华内容
下载资源
问答
  • 1.为什么使用token,token是什么?

    千次阅读 2020-11-01 19:45:45
    1.为什么使用token,token是什么? 官方回答: Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明...

    1.为什么要使用token,token是什么?

    官方回答:
    Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明自己的合法地位。
    我自己理解:
    token就相当于客户端登录的账号的唯一标识,在做一些数据请求的时候,后台会要求在请求头中携带token,如果没有token,或者token过期了,那么这时候就会对这个客户端进行返回响应的数据,然后前端在解析这些数据,判断是token过期,还是没有携带token,然后让用户进行相应的操作。总而言之,token是在向后台请求数据的时候必不可少的。如果没有token,那么后台要么不会返回响应的数据,要么就会返回一些无关紧要的数据。

    2.验证本地token。

    ​ 有些数据如果请求头不携带token是请求不到的,服务器会给我们返回空的数据或者是直接报错,这时候我们就可
    以在请求数据的时候进行前端验证本地token是否存在,如果存在的话就发送请求,如果不存在就让提醒用户前去
    登录或者没有登录无法查看数据,而我们在用户等了之后就把后台返回给我们的token值保存在本地。

    3.请求头携带token。

    如何在请求头中携带token
    -----上代码
    // 请求拦截器

    let  _axios = axios.create();   // 创建axios实例 
    // 请求拦截器
    _axios.interceptors.request.use(
        // 请求成功
        function (config) {
            const token = localStorage.getItem('token')
            if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token
                config.headers.authorization = token //请求头加上token
            }
            Toast.loading({
                message: '加载中...',
                forbidClick: true,
            });
            return config
        },
        // 请求失败
        function (error) {
            return Promise.reject(error)
        }
    )
    

    4.关于登录注册。

    登录注册一直都是前端程序员绕不开的一个需求,不管你是写什么项目都会用到登录注册 ,当你写代码到登录注册的时候大概会分为两个模块

    • ​ 密码登录
      • 在写密码登录的时候就回进行验证用户名、账号、手机号中的一种,当然这些验证都要写在前端,不然每一次都发送请求给服务器占用服务器性能,一般都是在写非空、格式的判断还有密码的长短判断。
    • ​ 手机号验证码登录
      • ​ 这种登录方式又涉及到了第一次登录那就相当于注册了,而注册之后是前往设置密码、个人信息,还是前往某个页面这些就根据项目需求来决定,不同的项目需求也不一样。

    5.关于封装axios和封装接口。

    • 封装axios

      import axios from 'axios'
      import { Toast } from 'vant';
      
      let _axios = axios.create({
          // 在这里配置请求头
          // baseURL: "https://wap.*******.com"     // 公共地址
          // headers:{}     // 请求头
      })
      // 请求拦截器
      _axios.interceptors.request.use(
          // 请求成功
          function (config) {
              const token = localStorage.getItem('token')
              if (token) { // 判断是否存在token,如果存在的话,则每个http header都加上token
                  config.headers.authorization = token //请求头加上token
              }
              Toast.loading({
                  message: '加载中...',
                  forbidClick: true,
              });
              return config
          },
          // 请求失败
          function (error) {
              return Promise.reject(error)
          }
      )
      
      // 响应拦截器
      _axios.interceptors.response.use(
          // 响应成功
          function (response) {
              if(response.code==200){
                  Toast.clear()
              }
              return response
          },
          //  响应失败
          function (error) {
              return Promise.reject(error)
          }
      )
      
      // 默认导出 _axios
      export default _axios
      
    • 封装接口

      ​ 首先新建一个request.js文件,一般建在utils下,然后倒入刚才封装的axios.js文件,新建一个对象,在对象中添加方法,方法就是请求接口的函数封装,然后默认导出对象,在main.js中导入requeat.js文件,然后将对象挂载在vue原型上。,然后倒入刚才封装的axios.js文件,新建一个对象,在对象中添加方法,方法就是请求接口的函数封装,然后默认导出对象,在main.js中导入requeat.js文件,然后将对象挂载在vue原型上。

    展开全文
  • vue项目token登录验证 Token是在客户端频繁向服务器发送请求,服务器需要频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码... 什么是token? ... 为什么使用token使用token是为了减轻服务器的压力,减少

    vue项目中使用token登录验证

    Token是在客户端频繁向服务器发送请求,服务器需要频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码是否正确,并作出相应提示,在这样的背景下,toekn技术便营运而生。

    什么是token?

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

    为什么要使用token?

    使用token是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。

    <template>
      <el-form :model="ruleform" :rules="rules" ref="ruleform">
          <div class="mb30form">
            <el-form-item prop="username">
              <el-input
                class="mb30"
                v-model="ruleform.username"
                placeholder="用户名"
                prefix-icon="el-icon-user"
              ></el-input>
            </el-form-item>
          </div>
          <div class="mb30form">
            <el-form-item prop="password">
              <el-input
                class="mb30"
                v-model="ruleform.password"
                type="password"
                placeholder="密码"
                @keyup.enter.native="login('ruleform')"
                prefix-icon="el-icon-lock"
              ></el-input>
            </el-form-item>
          </div>
        <el-button class="truel loginbutton" @click="login('ruleform')"
          >登 录</el-button
        >
      </el-form>
    </template>
    
    <script>
    import axios from "axios";
    import { mapMutations } from "vuex";
    export default {
    	data() {
    		return {
    			rules: {
            		password: [{ required: true, message: "请填写密码", trigger: "blur" }],
    		        username: [
    		          { required: true, message: "请填写用户名", trigger: "blur" },
    		        ]
    		    },
          		ruleform {
    				username: "",
    				password: ""
    			}
    		}
    	},
    	methods: {
    		...mapMutations(["changeLogin"]),
    		login(formName) {
    			this.$refs[formName].validate(() => {
    				if (valid) {
    		          const _this = this;
    		          const data = {
    		            username: this.ruleform.username,
    		            password: this.ruleform.password,
    		          };
    		          axios
    		            .post("/login/", data)
    		            .then((response) => {
    		              _this.userToken = "YTY" + new Date().getTime();
    		              // 将用户token保存到vuex中
    		              _this.changeLogin({ Authorization: _this.userToken });
    		              this.role = response.data.groups[0];
    		              this.redirect();
    		            })
    		            .catch(() => {
    		              _this.userToken = "YTY";
    		              // 将用户token保存到vuex中
    		              _this.changeLogin({ Authorization: _this.userToken });
    		              this.yan = true;
    		              this.newTime();
    		              this.ruleform.captcha = "";
    		            });
    		        } else {
    		
    		        }
    			})
    		}
    	}
    }
    </script>
    

    在路由表中进行全局路由守卫设置,检查token是否存在

    router.beforeEach((to,from,next) => {
    	if(to.path === '/login' || /^\/public\//.test(to.path)) {
    		console.log(to.path === '/login' || /^\/public\//.test(to.path));
        	next();
    	} else {
    		let token = localStorage.getItem('Authorization');
    	    console.log(token);
    	    if (token === null || token === '') {
    	      next('/login');
    	    } else {
    	      next();
    	    }
    	}
    })
    
    展开全文
  • 之后他继续提问,当你登录成功后,去请求购物车时,后台为什么会返回的是你的购物车,而不是别人的?不是匹配用户id吗??我还没领悟到面试官想让我回答的是Token。。。。参考链接:https://juejin.i...

    写这一篇文章的来源是因为某一天的我被面试官提问:让你设计一个登录页面,你会如何设计?

    我当时的脑子只有???

    不就是提交账号、密码给后台就搞定了呢?

    不可能那么简单,我弱弱的想,难道要对密码加密??

    之后他继续提问,当你登录成功后,去请求购物车时,后台为什么会返回的是你的购物车,而不是别人的?

    不是匹配用户id吗??我还没领悟到面试官想让我回答的是Token。。。。

    参考链接:https://juejin.im/post/5a6c60166fb9a01caf37a5e5

    什么是Token?

    token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。

    当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。

    简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。

    为什么要用Token?

    Token 完全由应用管理,所以它可以避开同源策略

    Token 可以避免 CSRF 攻击

    Token 可以是无状态的,可以在多个服务间共享

    基于token机制的身份认证

    使用token机制的身份验证方法,在服务器端不需要存储用户的登录记录。大概的流程:

    客户端使用用户名和密码请求登录。

    服务端收到请求,验证用户名和密码。

    验证成功后,服务端会生成一个token,然后把这个token发送给客户端。

    客户端收到token后把它存储起来,可以放在cookie或者Local Storage(本地存储)里。

    客户端每次向服务端发送请求的时候都需要带上服务端发给的token。

    服务端收到请求,然后去验证客户端请求里面带着token,如果验证成功,就向客户端返回请求的数据。(如果这个 Token 在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。)

    Token需要设置有效期吗?

    对于这个问题,我们不妨先看两个例子。一个例子是登录密码,一般要求定期改变密码,以防止泄漏,所以密码是有有效期的;另一个例子是安全证书。SSL 安全证书都有有效期,目的是为了解决吊销的问题。所以无论是从安全的角度考虑,还是从吊销的角度考虑,Token 都需要设有效期。

    那么有效期多长合适呢?

    只能说,根据系统的安全需要,尽可能的短,但也不能短得离谱——想像一下手机的自动熄屏时间,如果设置为 10 秒钟无操作自动熄屏,再次点亮需要输入密码,会不会疯?

    然后新问题产生了,如果用户在正常操作的过程中,Token 过期失效了,要求用户重新登录……用户体验岂不是很糟糕?

    解决Token失效的问题

    一种方案是在服务器端保存 Token 状态,用户每次操作都会自动刷新(推迟) Token 的过期时间——Session 就是采用这种策略来保持用户登录状态的。然而仍然存在这样一个问题,在前后端分离、单页 App 这些情况下,每秒种可能发起很多次请求,每次都去刷新过期时间会产生非常大的代价。如果 Token 的过期时间被持久化到数据库或文件,代价就更大了。所以通常为了提升效率,减少消耗,会把 Token 的过期时保存在缓存或者内存中。

    另一种方案,使用 Refresh Token,它可以避免频繁的读写操作。这种方案中,服务端不需要刷新 Token 的过期时间,一旦 Token 过期,就反馈给前端,前端使用 Refresh Token 申请一个全新 Token 继续使用。这种方案中,服务端只需要在客户端请求更新 Token 的时候对 Refresh Token 的有效性进行一次检查,大大减少了更新有效期的操作,也就避免了频繁读写。当然 Refresh Token 也是有有效期的,但是这个有效期就可以长一点了,比如,以天为单位的时间。

    使用Token和RefreshToken的时序图如下:

    上面的时序图中并未提到 Refresh Token 过期怎么办。不过很显然,Refresh Token 既然已经过期,就该要求用户重新登录了。

    当然还可以把这个机制设计得更复杂一些,比如,Refresh Token 每次使用的时候,都更新它的过期时间,直到与它的创建时间相比,已经超过了非常长的一段时间(比如三个月),这等于是在相当长一段时间内允许 Refresh Token 自动续期。

    到目前为止,Token 都是有状态的,即在服务端需要保存并记录相关属性。那说好的无状态呢,怎么实现?

    无状态Token

    如果我们把所有状态信息都附加在 Token 上,服务器就可以不保存。但是服务端仍然需要认证 Token 有效。不过只要服务端能确认是自己签发的 Token,而且其信息未被改动过,那就可以认为 Token 有效——“签名”可以作此保证。平时常说的签名都存在一方签发,另一方验证的情况,所以要使用非对称加密算法。但是在这里,签发和验证都是同一方,所以对称加密算法就能达到要求,而对称算法比非对称算法要快得多(可达数十倍差距)。更进一步思考,对称加密算法除了加密,还带有还原加密内容的功能,而这一功能在对 Token 签名时并无必要——既然不需要解密,摘要(散列)算法就会更快。可以指定密码的散列算法,自然是 HMAC。

    上面说了这么多,还需要自己去实现吗?不用!JWT 已经定义了详细的规范,而且有各种语言的若干实现。

    不过在使用无状态 Token 的时候在服务端会有一些变化,服务端虽然不保存有效的 Token 了,却需要保存未到期却已注销的 Token。如果一个 Token 未到期就被用户主动注销,那么服务器需要保存这个被注销的 Token,以便下次收到使用这个仍在有效期内的 Token 时判其无效。有没有感到一点沮丧?

    在前端可控的情况下(比如前端和服务端在同一个项目组内),可以协商:前端一但注销成功,就丢掉本地保存(比如保存在内存、LocalStorage 等)的 Token 和 Refresh Token。基于这样的约定,服务器就可以假设收到的 Token 一定是没注销的(因为注销之后前端就不会再使用了)。

    如果前端不可控的情况,仍然可以进行上面的假设,但是这种情况下,需要尽量缩短 Token 的有效期,而且必须在用户主动注销的情况下让 Refresh Token 无效。这个操作存在一定的安全漏洞,因为用户会认为已经注销了,实际上在较短的一段时间内并没有注销。如果应用设计中,这点漏洞并不会造成什么损失,那采用这种策略就是可行的。

    在使用无状态 Token 的时候,有两点需要注意:

    Refresh Token 有效时间较长,所以它应该在服务器端有状态,以增强安全性,确保用户注销时可控

    应该考虑使用二次认证来增强敏感操作的安全性

    到此,关于 Token 的话题似乎差不多了——然而并没有,上面说的只是认证服务和业务服务集成在一起的情况,如果是分

    分离认证服务

    当 Token 无状态之后,单点登录就变得容易了。前端拿到一个有效的 Token,它就可以在任何同一体系的服务上认证通过——只要它们使用同样的密钥和算法来认证 Token 的有效性。就样这样:

    当然,如果 Token 过期了,前端仍然需要去认证服务更新 Token:

    可见,虽然认证和业务分离了,实际即并没产生多大的差异。当然,这是建立在认证服务器信任业务服务器的前提下,因为认证服务器产生 Token 的密钥和业务服务器认证 Token 的密钥和算法相同。换句话说,业务服务器同样可以创建有效的 Token。

    如果业务服务器不能被信任,该怎么办?

    不受信的业务服务器

    遇到不受信的业务服务器时,很容易想到的办法是使用不同的密钥。认证服务器使用密钥1签发,业务服务器使用密钥2验证——这是典型非对称加密签名的应用场景。认证服务器自己使用私钥对 Token 签名,公开公钥。信任这个认证服务器的业务服务器保存公钥,用于验证签名。幸好,JWT 不仅可以使用 HMAC 签名,也可以使用 RSA(一种非对称加密算法)签名。

    不过,当业务服务器已经不受信任的时候,多个业务服务器之间使用相同的 Token 对用户来说是不安全的。因为任何一个服务器拿到 Token 都可以仿冒用户去另一个服务器处理业务……悲剧随时可能发生。

    为了防止这种情况发生,就需要在认证服务器产生 Token 的时候,把使用该 Token 的业务服务器的信息记录在 Token 中,这样当另一个业务服务器拿到这个 Token 的时候,发现它并不是自己应该验证的 Token,就可以直接拒绝。

    现在,认证服务器不信任业务服务器,业务服务器相互也不信任,但前端是信任这些服务器的——如果前端不信任,就不会拿 Token 去请求验证。那么为什么会信任?可能是因为这些是同一家公司或者同一个项目中提供的若干服务构成的服务体系。

    但是,前端信任不代表用户信任。如果 Token 不没有携带用户隐私(比如姓名),那么用户不会关心信任问题。但如果 Token 含有用户隐私的时候,用户得关心信任问题了。这时候认证服务就不得不再啰嗦一些,当用户请求 Token 的时候,问上一句,你真的要授权给某某某业务服务吗?而这个“某某某”,用户怎么知道它是不是真的“某某某”呢?用户当然不知道,甚至认证服务也不知道,因为公钥已经公开了,任何一个业务都可以声明自己是“某某某”。

    为了得到用户的信任,认证服务就不得不帮助用户来鉴别业务服务。所以,认证服器决定不公开公钥,而是要求业务服务先申请注册并通过审核。只有通过审核的业务服务器才能得到认证服务为它创建的,仅供它使用的公钥。如果该业务服务泄漏公钥带来风险,由该业务服务自行承担。现在认证服务可以清楚的告诉用户,“某某某”服务是什么了。如果用户还是不够信任,认证服务甚至可以问,某某某业务服务需要请求 A、B、C 三项个人数据,其中 A 是必须的,不然它不工作,是否允许授权?如果你授权,我就把你授权的几项数据加密放在 Token 中……

    废话了这么多,有没有似曾相识……对了,这类似开放式 API 的认证过程。

    e...看了那么多,我希望下次面试官问我登录页面怎么设计的时候,我可以说一番长篇大论哈哈哈。

    展开全文
  • 无状态的意思是,第一次发送请求登录成功后,第二次发送请求其他接口,服务端是不知道你已经登录成功,第二次请求和第一次请求是没有任何关联的. Http的这个特性就产生了一个问题,导致登录状态的丢失.于是在每次请求的...

    一、HTTP是无状态协议

    无状态的意思是,第一次发送请求登录成功后,第二次发送请求其他接口,服务端是不知道你已经登录成功,第二次请求和第一次请求是没有任何关联的.
    Http的这个特性就产生了一个问题,导致登录状态的丢失.于是在每次请求的时候都验证用户的账号密码,但是重复的验证操作,会导致计算机资源的消耗,用户的使用体验就会变差.
    你可以想象成去游乐园,进大门的时候需要验票,玩过山车需要验票,看大熊猫也需要验票,游乐场也发现每次验票体验太差,后来给游客们发放手环解决验证问题,同样,计算机也可以利用这一机制解决该问题,我们把这个手环称为token.

    二、token的实现过程

    在这里插入图片描述

    展开全文
  • 什么token token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可...
  • 为什么使用token 优点 后台不用保存token,只需要验证是否是自己签发的token 支持多种前段,如移动端和浏览器 缺点和解决方法 每次都要去数据库查询权限信息验证token 解决: 将查询到的权限数据保存到session中...
  • 说这个原因之间,我们需要先了解一下什么叫CSRF。 CSRF 中文翻译过来就是跨站请求伪造(英语:Cross-site request forgery) 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。跟跨网站...
  • 前言:之前搞了几天没成功…今天最终是写好了! Token如何实现登录验证:登录时服务器接收用户名密码,如果...2.请求时路径写了方法名还一直奇怪为什么404 总结:我是憨憨 但是真的头大了很久! 完整项目代码的gith...
  • shiro使用(使用token)

    万次阅读 热门讨论 2019-05-12 22:18:22
    为什么使用token,请看这里 解决思路: 1.增加一个过滤器,对每一个请求都进行token的校验。如果为登录请求,则可以放过。 2.将过滤器设置进shiro中。 第一步:实现自定义ShiroFilter.这里选择继承...
  • PHP使用 tokent (令牌)进行登录

    万次阅读 2018-05-09 10:19:46
    1. 为什么使用tokent进行登录 前后端分离或者为了支持多个web应用,那么原来的cookies或者session在使用上就会有很大的问题 cookie和session认证需要在同一主域名下才可以进行认证(目前可以把session存储在...
  • 什么token

    2021-04-18 22:51:41
    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入...
  • 使用Token请求数据

    2020-12-15 19:04:38
    1.什么是Token? token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。 当用户第一次登录后,服务器生成一个token并将此token返回给...2.为什么要用Token? Token 完全由应用管理,所
  • API开发越来越成为主流,需要各自Access Token登录状态。甚至目前web端mvvm应用,如angular、vue、react都使用了jwt方式,也就是不再使用cookie和session作为登录状态。有很多作为这种无状态http的身份登录状态...
  • 为什么需要用token来做?传统的session为什么不可以?token有何优势。 session存在的问题 :①前后端分离项目,前端可能是web/app等,对于存储sessionId的cookie问题;②session存在CSRF跨站伪造请求攻击;③ ...
  • 使用postman完成登录token传参

    千次阅读 2018-12-02 17:44:35
    1.问题描述: django项目中一些需要确认用户已登录的接口测试,每次使用postman工具进行相应接口的测试,都会报401(不是403)错误, 更奇葩的是后来使用已经写成的...为什么我会这么说,是因为我被一些细节的东西浪费了很...
  • token使用

    2020-07-15 10:21:03
    为什么使用token 1.token完全有应用管理,它可以避开同源策略 2.token可以避免CSRF攻击 3.token可以是无状态的,可以在多个服务间共享 二.token的作用 1.防止表单重复提交 2.身份验证 三.token身份验证的使用-----...
  • 为什么80%的码农都做不了架构师?>>> ...
  • 什么Token?

    2020-07-25 16:47:17
    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入:...
  • 那我们就使用token的模式来进行登录。 jwttoken 为什么要使用这个jwttoken呢? 安全性高,防止token被伪造和篡改 自包含,减少存储开销 跨语言,支持多种语言的实现 支持过期,发布者校验 主要有上面几点优势...
  • 文章目录RESTful登录设计(基于Spring及Redis的Token鉴权)什么是 REST使用 Token 进行身份鉴权交互流程程序示例一些细节源码发布 什么是 REST REST (Representational State Transfer) 是一种软件架构风格。它将...
  • 什么Token

    2019-10-31 11:36:31
    为什么使用token? 因为HTTP协议是开放的,可以任人调用。所以,如果接口不希望被随意调用,就需要做访问权限的控制,认证是好的用户,才允许调用API。 传统身份验证的方法 HTTP 是一种没有状态的协议,也就是它并...
  • token什么

    2020-12-14 16:52:42
    对于初学者来说,对Token和Session的使用难免会限于困境,开发过程中知道有这个东西,但却不知道为什么要用他?更不知道其原理,今天我就带大家一起分析分析这东西。 一、我们先解释一下他的含义: 1、Token的引入...
  • 为什么使用JWT? 官网 https://jwt.io/ 3.0版本 https://github.com/lcobucci/jwt 安装 composer require lcobucci/jwt 随着技术的发展,分布式web应用的普及,通过session管理用户登录状态成本越来越高,因此慢慢...
  • 1.为什么使用token,token是什么? 官方回答: Token 是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回 Token 给前端。前端可以在每次请求的时候带上 Token 证明...
  • token

    2020-10-07 23:02:15
    为什么要有token? http是无法识别用户是否在线的(无法识别状态,不知道是否在状态) 我们只需要每次发送的时候,带上token,就知道用户是否在登录状态 怎么使用token? 1.每次发送的时候,带上token,就知道...
  • Flask 是什么?我想打开这篇文章的你应该不陌生,但是我还引用维基百科上的内容做个简短的介绍。Flask 是一个使用 Python 编写的轻量级 Web 应用框架。基于 Werkzeug WSGI 工具箱和 Jinja2 模板引擎。Flask 使用 BSD...
  • 方案1使用springSecurity中的通过springSecurity的用户帐号和sessionid来判断sessionid是否是同一个浏览器进行数据的访问,而达到访问报错。a) 但是,我测试过,出现一个错误,每一次请求的sessionId都不一样?...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 410
精华内容 164
关键字:

为什么使用token登录