token无效或已过期,请重新登录(toke)

admin 2023-01-13 1.88 K阅读 1评论

温馨提示:这篇文章已超过399天没有更新,请注意相关的内容是否还可用!

本篇文章给大家谈谈toke,以及token无效或已过期,请重新登录对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

一次搞明白 Session、Cookie、Token,面试问题全搞定


01

它们分别是什么?

session:

session的中 翻译是“会话”,当 户打开某个web应 时,便与web服务器产 次session。服务器使 session把 户的信息临时保存在了服务器上, 户离开 站后session会被销毁。这种 户信息存储 式相对cookie来说更安全,可是session有 个缺陷:如果web服务器 做了负载均衡,那么下 个操作请求到了另 台服务器的时候session会丢失。

cookie:

cookie是保存在本地终端的数据。cookie由服务器 成,发送给浏览器,浏览器把cookie以kv形式保存到某个 录下的 本 件内,下 次请求同 站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加 了 些限制确保cookie不会被恶意使 ,同 时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径, 般设置为全局:"")、失效时间、安全标志(指定后,cookie只有在使 SSL连接时才发送到服务器(https))。

token:

token的意思是“令牌”,是 户 份的验证 式,最简单的token组成:uid( 户唯 的 份标识)、time(当前时间的时间戳)、sign(签名,由token的前 位+盐以哈希算法压缩成 定长的 六进制字符串,可以防 恶意第三 拼接token请求服务器)。还可以把不变的参数也放进token,避免多次查库。

02

它们之间有什么关系?

cookie,session都可以是token存储的一种方式。

cookie为存储在本地的数据,请求时会将该数据提交到服务器验证使用。

session为存储在服务器上的内存数据,只要会话没有中断,那么该数据持续有效。

toke通常上来说属于令牌,cookie,session为一种数据存储和使用方式,令牌可以存储在cookie,session,但是实际上通过url参数或者表单参数一样可以达到同样的效果。但是对于开发和维护来说成本较高,一旦后端要求修改参数,这样的使用方式对于修改来说是很头疼的事情。

03

它们本质上的区别?

session的使用方式是客户端cookie里存id,服务端session存用户数据,客户端访问服务端的时候,根据id找用户数据。

而token的使用方式是客户端里存id(也就是token)、用户信息、密文,服务端什么也不存,服务端只有一段加密代码,用来判断当前加密后的密文是否和客户端传递过来的密文一致,如果不一致,就是客户端的用户数据被篡改了,如果一致,就代表客户端的用户数据正常且正确。

流程:

session,注册登录-服务端将user存入session-将sessioni存入浏览器的cookie-再次访问时根据cookie里的sessionid找到session里的user。

token,注册登录-服务端基于用户信息与密钥生成一个token-将token+user 返回给浏览器-再次访问时传递token+user+密文数据,后台会再次使用user与密钥生成token,与传递过来的token比较,一致则正确。

session、cookie、token 这几个概念在面试中可以说是经常出现的,因为通过这个概念基本上可以了解到你对网络请求或者权限管理这一块是否有过了解和实际的应用。

toke过期失效 ---提示并跳转到登录页面


token过期自动跳转到登录页面

设置token有效期为2小时,超过两小时 token失效 ,接口返回结果:{code:0,msg:'token过期',}

每次路由跳转都会对token进行判断,设置一个全局的beforeEach钩子函数,如果token存在就跳到你所需要的页面,否则直接跳转到登录页面,让用户重新存取token

全局路由钩子:router.beforeEach

router.beforeEach(async (to, from, next) = {

            //获取token

            const hasToken = getToken()

            if (hasToken) {

                //token存在,如果当前跳转的路由是登录界面

                if (to.path === '/login') {

                    // if is logged in, redirect to the home page

                    next({

                        path: '/'

                    })

                } else {

                    //在这里,就拉去用户权限,判断用户是否有权限访问这个路由

                } catch (error) {

                    // remove token and go to login page to re-login

                    await store.dispatch('user/resetToken')

                    Message.error(error || 'Has Error')

                    next(`/login?redirect=${to.path}`)

                }

            } else {

                //token不存在

                if (whiteList.indexOf(to.path) !== -1) {

                    //如果要跳转的路由在白名单里,则跳转过去

                    next()

                } else {

                    //否则跳转到登录页面

                    next(`/login?redirect=${to.path}`)

                }

            }

        })

请求拦截 设置

import axios from 'axios'

import { MessageBox, Message } from 'element-ui'

import store from '@/store'

import { getToken } from '@/utils/auth'

const service = axios.create({

  baseURL: process.env.VUE_APP_BASE_API,

  timeout: 5000

})

//发送请求时把token携带过去

service.interceptors.request.use(

  config = {

    if (store.getters.token) {

      config.headers['sg-token'] = getToken()

    }

    return config

  },

  error = {

    console.log(error)

    return Promise.reject(error)

  }

)

//请求响应

service.interceptors.response.use(

  response = {

    console.log(response.data)

    const res = response.data

    // token过期,重返登录界面

    if (res.code === 0) {

      store.dispatch('user/logout').then(() = {

        location.reload(true)

      })

    }

    return res

  },

  error = {

    Message({

      message: error.msg,

      type: 'error',

      duration: 5 * 1000

    })

    return Promise.reject(error)

  }

)

export default service

把run、toke、swim、play、make、clean这六个单词的现在分词形式


tailking running playing swimming writing

reading cleaning eating singing beginning

coming

关于とけい的い 和 がくせい 以及 せんせい


1。就是直接发toke~(toge~)。~表示长音,e延长一拍。

2. がくせい 和 せんせい 中的的“せい”是一样的。

所以有误覚是因为汉语里没有“e”这个音,往往像中文的“什么什么音”。

Take的过去式是什么


take 的过去式是took

过去分词是taken

现在分词是taking

单三形式是takes

希望能帮到你

toke的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于token无效或已过期,请重新登录、toke的信息别忘了在本站进行查找喔。

文章版权声明:除非注明,否则均为鑫光知识网原创文章,转载或复制请以超链接形式并注明出处。

发表评论

快捷回复: 表情:
评论列表 (有 1 条评论,1882人围观)
网友昵称:艾萨
艾萨 V 游客 沙发
2023-01-14 回复
d(也就是token)、用户信息、密文,服务端什么也不存,服务端只有一段加密代码,用来判断当前加密后的密文是否和客户端传递过来的密文一致,如果不一致,就是客户端的用户数据被篡改了,如果一致,就代表客户端的用户数据正常且正确。 流程: session,注册登录-服务端将user存入se

目录[+]

取消
微信二维码
微信二维码
支付宝二维码