经常在开发环境中会模仿微信token机制。但是这个有什么用呢,在我看来只是防止别人乱请求接口而已了。我实在想不出他有啥用,比如登录成功返回一个a b c和md5(a+b+c+token) 那么下次请求接口带上这abc参数与我服务器中的token加密验证字符窜是否一致。 我感觉这没多大用处啊,求大神说说他的奥妙之处
你说的这个情况,一般生成的token是可逆切能进行自我校验的,也就是说一般不用MD5算法,而是用可以反向转成常规数据,然后常规数据中不同部分的内容自洽。所以如果用户随便弄了个和token格式一样的token串,服务器就直接报错,而不会返回除了错误信息之外的任何数据。这样一定程度上杜绝了爬虫从网站抓取数据,也同时减轻了服务器压力(因为如果无论是否是有效请求,都去查询数据,查询压力会很大)。由于你的token生成方法是不公开的,所以如果爬虫编写者想要破解你的token构造方法也是有一定难度的。
除了你说的这个之外,还可以用作用户登录。即用户登录的时候,返回一个token,在前端保存。在此token失效之前,前端一直可以使用此token作为用户登录的令牌。每次请求服务器数据都会通过此令牌将数据库中此令牌对应的用户信息取出来,也就是说,此时令牌token就等于给已登录用户的授权。
这时候的token其实起到的作用就是session的作用。
你说的这个情况,一般生成的token是可逆切能进行自我校验的,也就是说一般不用MD5算法,而是用可以反向转成常规数据,然后常规数据中不同部分的内容自洽。所以如果用户随便弄了个和token格式一样的token串,服务器就直接报错,而不会返回除了错误信息之外的任何数据。这样一定程度上杜绝了爬虫从网站抓取数据,也同时减轻了服务器压力(因为如果无论是否是有效请求,都去查询数据,查询压力会很大)。由于你的token生成方法是不公开的,所以如果爬虫编写者想要破解你的token构造方法也是有一定难度的。
除了你说的这个之外,还可以用作用户登录。即用户登录的时候,返回一个token,在前端保存。在此token失效之前,前端一直可以使用此token作为用户登录的令牌。每次请求服务器数据都会通过此令牌将数据库中此令牌对应的用户信息取出来,也就是说,此时令牌token就等于给已登录用户的授权。
这时候的token其实起到的作用就是session的作用。