写在开始
有人说,爱上一座城,是因为城中住着某个喜欢的人。其实不然,爱上一座城,也许是为城里的一道生动风景,为一段青梅往事,为一座熟悉老宅。或许,仅仅为的只是这座城。就像爱上一个人,有时候不需要任何理由,没有前因,无关风月,只是爱了。 —林徽因
前段时间,大体了解了一下前后端分离之Vue项目构建测试打包发布,并简单的记录了一下。
其实,如果单纯的前后端分离项目,大可不必使用Token,原始的session就可以解决问题,当然前提是要在一个域(域名、IP、端口必须保持一致)下,前后端开发人员可使用Nginx代理服务器进行测试。
但是在微服务的大环境下,某些原因服务的细化可能不会在一个域下,这时候就需要客户端自己保存加密凭证,后台只需要做简单的解密认证。
准备环境
既然微服务这么流行,这里我们还是选择SpringBoot作为测试案例,使用JWT(Json Web Token)的授权方式。
项目涉及:
- SpringBoot的使用
- JWT加密解密
- Cors跨域访问配置
- Interceptor拦截器配置
代码什么的就不在这里罗列了,详细见:前后端分离微服务认证之JWT
总结
优点
- 因为Token是以JSON加密的形式保存在客户端的,所以JWT是跨语言的,原则上任何web形式都支持。
- 不需要在服务端保存会话信息,特别适用于分布式微服务。
注意事项
- 切记保护好密钥,这个是最基本的。
- 如果有条件,尽量使用https安全协议。
- Token信息尽可能的少,只保存必须的就可以。
- 退出操作一定要考虑好,如果Token被盗用,一定要做好服务端的校验。