电脑知识
少儿编程证书电子版怎么查(少儿编程的等级考试被国家认证吗?对升学有帮助吗)
2023-04-12 09:08

Token(或Session)和Secret有什么区别?公司一个程序员小伙伴在看我以前写的代码的时候产生了疑惑。在他的认知里,Token已经是一个类似于凭据一样的东西了,为什么在请求加密的时候还要去使用Secret进行加密(Sign)?

搞清楚这个问题,我们先要了解下常规的请求验证都有哪些东西!目前主流的不管是HTTP请求还是普通的TCP请求,一般来说固定参数基本上都是一些比如method(请求接口或方法)、timestamp(请求时间戳)、sign(参数签名)、Token或Session(请求令牌)。其他的一些固定参数暂时不讲,可能每个公司都有每个公司的一些固定参数。

其中,Token大多数情况下是用来标识请求合法性的的,比如一些网站或者软件在用户登录的时候,会生成一个Token(或Session),而这个Token是有使用期限的,当超过使用期限的时候就会被要求重新登录。当然,Token一般来说是可以自动刷新使用期限的,通常只要用户保持活跃状态,在Token到期之前程序会自动刷新Token的使用期限。除非在Token的使用期限到达以后,用户还没有访问过程序,这时候再次点开软件或者网站的时候就会要求用户重新登录。

所以,Token其实是用户登录的凭证,它是有使用期限的,并且会一直变化!当然了,有些公司在设计框架的时候会设置Token为衡量,我认为这种做法是有风险,可能会导致账号被冒用的危险!但基本上在桌面软件上比较常见!

Secret则代表一个用户的唯一标识,和Token一样,叫法也有很多,比如说UserId、UserKey或者SecretKey等等。但是基本上这就是程序分配给用户的唯一身份标识,一般来说不会变!

Secret的目的也很简单,其实就是做个双重保险,通常用来验证Token的合法性!或者说Token用来验证Secret的合法性!

如果说Token是进入房间的钥匙的话,那么Secret就是房产证!

而因为每个用户都会分配一个Secret,因此拿Secret作请求参数签名的前缀和后缀是最好不过的了!

#程序员# #编程# #计算机#

发表评论
0评