按我目前的理解,token鉴权一种是服务端生成token后存放在服务器中然后发送给客户端,客户端下次请求时带着这个token。这样使用其实我觉得和cooki+session很相似,安全性也差不多。
还有一种用法是使用用户信息和一定规则加上签名生成token或者说jwt标准那样子的,服务端生成后发送给客户端,服务端不进行存储,下次用户请求时对用户所携带的token进行拆解然后按相同规则生成一个新的token和用户携带来的token进行比较,如果一致就验证通过,这样做确实有效防止了token被篡改的可能,但是token如果被别有用心的人获取不也是也已伪造身份做一些不好的事情吗?
我觉得如果对token进行了固化,那么用起来不和cookie没啥区别的。但是如果不固
这是我在okta上看到的,貌似是个官方?,我也不太懂,我选中的那块它说了令牌位于用户浏览器中那就相当与是固化吗?还有对一次性token的理解,是不固化?还是说用户退出后销毁相应的token?
但是如果是jwt的话还可以用payload设置销毁时间,但是也不能直接进行销毁啊,只能是修改已经固化在本地的token吗
以上都是我自己个人的理解,没有别的意思,看了好些博客仍然对这个token不是很理解,网上的token貌似讲的都一样把我想知道的都没说出来。新手刚入门,求解答。
如果是使用token 最好还是使用jwt 吧,无状态的优势很明显。无并发困扰,无存储风险,劣势就是无法强制失效。这也就是你说的安全性问题,如果一个token长期有效,且服务器无法强制注销,是很危险,不过token 都有有效时间,一般的建议是将有效时间设置的比较短,然后用refresh_token来做补充。当然,如果不嫌麻烦,能接收消耗,你也可以每次访问都刷新。确实和cookie+session的方式很类似,所以有很多把token当cookie用的,不过是存储方式和形式变了,但jwt 和 cookie+session的方式虽然很像,但目的已经变了。