什么是token/token如何使用
什么是token
token的意思是“令牌”,是服务端生成的一串字符串,作为客户端进行请求的一个标识。
当用户第一次登录后,服务器生成一个token并将此token返回给客户端,以后客户端只需带上这个token前来请求数据即可,无需再次带上用户名和密码。
简单token的组成;uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名,token的前几位以哈希算法压缩成的一定长度的十六进制字符串。为防止token泄露)。
token的存储
token可以存到数据库中,但是有可能查询token的时间会过长导致token丢失(其实token丢失了再重新认证一个就好,但是别丢太频繁,别让用户没事儿就去认证)。
为了避免查询时间过长,可以将token放到内存中。这样查询速度绝对就不是问题了,也不用太担心占据内存,就算token是一个32位的字符串,应用的用户量在百万级或者千万级,也是占不了多少内存的。
token的加密
token是很容易泄露的,如果不进行加密处理,很容易被恶意拷贝并用来登录。加密的方式一般有:
在存储的时候把token进行对称加密存储,用到的时候再解密。
文章最开始提到的签名sign:将请求URL、时间戳、token三者合并,通过算法进行加密处理。
最好是两种方式结合使用。
还有一点,在网络层面上token使用明文传输的话是非常危险的,所以一定要使用HTTPS协议。
App登录
除了布局之外,登录功能也是项目的一大难点,主要说一下token
第一步:token
在计算机身份认证中是令牌(临时)的意思,在词法分析中是标记的意思。一般作为邀请、登录系统使用。主要作用是确认用户的身份,帮助用户保护个人信息。
使用起来十分简单,只需要在发送登录请求时将后台返回的token令牌保存到本地就可以了
window.sessionStorage.setItem("token", data.data.remember_token);
一般使用的sessionStorage,相对于 localStorage来说更加的安全
第二步:token验证
获取token后需要验证在请求拦截中进行本地token的验证,如果存在将其存入到请求头中
axios.interceptors.request.use((config) => {// token验证请求if (window.sessionStorage.getItem('token')) {config.headers.Authorization = ${window.sessionStorage.getItem('token')}}return config
})
如果在用户在同一页面存在时间过久没有操作就说明用户离开了,为了防止其他人获取用户信息需要在响应拦截进行验证
axios.interceptors.response.use(config => {// token验证响应if (config.data.code == 400) {window.sessionStorage.removeItem("token")}return config
})
当用户没有进行登录时需要强制跳转到登录页面进行登录使用路由钩子进行跳转
if ( !window.sessionStorage.getItem("token")) {next("/Login")}
什么是token/token如何使用相关推荐
- 什么是token token用在哪 token放在哪比较好
1. token 其实就是访问资源的凭证,一般是用户通过用户名和密码登录成功之后,服务器将登录凭证做数字签名,加密之后得到的字符串作为token2. token用在用户登录城后之后会返回给客户端,3. ...
- golang通过RSA算法生成token,go从配置文件中注入密钥文件,go从文件中读取密钥文件,go RSA算法下token生成与解析;go java token共用
RSA算法 token生成与解析 本文演示两种方式,一种是把密钥文件放在配置文件中,一种是把密钥文件本身放入项目或者容器中. 下面两种的区别在于私钥公钥的初始化, init方法,需要哪种取哪种. 通过 ...
- php jwt使用案例,PHP使用JWT创建Token的实例详解
iss (issuer)issuer请求实体,可以是发起请求的用户的信息,也可是jwt的签发者 sub (Subject)设置主题,类似于发邮件时的主题 aud (audience)接收jwt的一方 ...
- AJAX安全-Session做Token
个人思路,请大神看到了指点 个人理解token是防止扫号机或者恶意注册.恶意发表灌水,有些JS写的token算法,也会被抓出来被利用,个人感觉还是用会过期的Session做token更好,服务器存储, ...
- SpringMVC中实现的token,防表单重复提交
一:首先创建一个token处理类 ,这里的类名叫 TokenHandler private static Logger logger = Logger.getLogger(TokenHandler. ...
- Token ,Cookie、Session傻傻分不清楚?
点击上方蓝色"视学算法",选择"设为星标" 作者 | 王菜鸟1993 来源 | cnblogs.com/JamesWang1993/p/8593494.html ...
- 简单介绍vue获取token实现token登录的示例代码
最近新做了个vue项目,正好项目中有登录部分,本文就详细的介绍一下登录部分的实现,文中通过示例代码介绍的非常详细,感兴趣的小伙伴们可以参考一下 使用token做登录验证的思路大致如下: 1.在第一次登 ...
- 不要用JWT替代session管理(上):全面了解Token,JWT,OAuth,SAML,SSO
通常为了弄清楚一个概念,我们需要掌握十个概念.在判断 JWT (Json Web Token) 是否能代替 session 管理之前,我们要了解什么是 token,以及 access token 和 ...
- 漫谈BCH Token方案
Token是什么? Token是什么,Token有必要存在吗?如果说公链的币就是钱的话,那么Token就是票(或者说"通证").生活中处处需要钱,而有的时候,钱要换一种方式存在,那 ...
- php 验证微信token_微信token认证程序
[php]代码库<?php /** * @author heqing * @version v1.0 */ //define your token define("TOKEN" ...
最新文章
- Windows Server 2008 Server Core - 小脚印,大安全
- 漫画 | 花了七天时间测试,我彻底搞明白了 TCP 的这些内存开销!
- 十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据
- 数据仓库项目管理面试题整理(十一)
- 入门代码教程第二节 如何:实现服务协定
- 双重ScrollView,RecyclerView联动实例
- 0xbc指令 st75256_DDOS终极加速列车算法
- .Net单元测试方法
- 扩展Java EE应用程序的基础
- 屏上有一层紫色(正在找原因)
- 解决“Dynamic Web Module 3.0 requires Java 1.6 or newer.”错误
- poj1753 Flip Game(枚举Enum+dfs)
- Java基础0309
- c语言入门教程怎么编程,从零开始的C语言入门教程-编程语言的基础
- Apache下如何安装ssl证书?PHPWAMP如何开启SSL
- 荣耀9换从服务器获取安装包信息失败,华为荣耀9解锁BootLoader教程 荣耀9获取解锁码进行解锁...
- 自学mysql教程 资料_数据库MYSQL,自学,命令,教程。
- 置信区间、P值那点事
- Layui设置table指定行的背景色
- 软件测试分类(按测试阶段划分)