Vue路由之axios配置JWT身份验证 | vue jwt
认证和授权,其实吧简单来说就是:认证就是让服务器知道你是谁,授权就是服务器让你知道你什么能干,什么不能干(例如下面meta元信息),认证授权俩种方式:Session-Cookie与JWT,下面我们就针对这两种方案就行阐述。说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。毕竟我们在使用jwt之前,是使用session认证的。http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,还需要认证,所以cookie机制可以是HTTP保存状态。而session是基于cookie的...
认证和授权,其实吧简单来说就是:认证就是让服务器知道你是谁,授权就是服务器让你知道你什么能干,什么不能干(例如下面meta元信息),认证授权俩种方式:Session-Cookie与JWT,下面我们就针对这两种方案就行阐述。
说起JWT,我们应该来谈一谈基于token的认证和传统的session认证的区别。毕竟我们在使用jwt之前,是使用session认证的。
http协议本身是一种无状态的协议,而这就意味着如果用户向我们的应用提供了用户名和密码来进行用户认证,那么下一次请求时,还需要认证,所以cookie机制可以是HTTP保存状态。而session是基于cookie的,当 client通过用户名密码请求server并通过身份认证后,server就会生成身份认证相关的 session 数据,并且保存在内存或者内存数据库。并将对应的 sesssion_id返回给client,client会把保存session_id(可以加密签名下防止篡改)在cookie中。此后client的所有请求都会附带该session_id,以确定server是否存在对应的session数据以及检验登录状态以及拥有什么权限,如果通过校验,可以请求接口数据,否则则重新登录。
session认证的优缺:优势:
相比JWT,最大的优势就在于可以主动清除session了 session保存在服务器端,相对较为安全 结合cookie使用,较为灵活,兼容性较好劣势:
session:每个用户经过我们的应用认证之后,我们的应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。
扩展性: 用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。
cookie + session在跨域场景表现并不好
基于 cookie 的机制很容易被CSRF 因为是基于cookie来进行用户识别的, cookie如果被截获,用户就会很容易受到...