他的回复:
华为云账号:kentarou;微信昵称:kentarou;话题B . 列举几个您常用的安全管理框架的优劣势在平时开发中会时常遇到 用户安全认证的问题,不同的项目有不同的常用方案。在前后端不分离的项目中,这些项目往往是比较老旧的项目一般都采用shiro的方式来管理用户,在spring全家桶的模式下也常常采用springsecurity的方式。shiro和springsecurity 的机制大同小异基本都要满足认证和授权两个核心功能,shiro的优势在于轻量级和spring关联不大易于分割项目,springsecurity则必须使用spring框架 。两者都是采用session的安全机制,简单易操作,项目容易搭建,但也存在问题和漏洞例如:每个用户经过我们的应用认证之后,我们的应用都要在服务端做一次记录,以方便用户下次请求的鉴别,通常而言session都是保存在内存中,而随着认证用户的增多,服务端的开销会明显增大。再者,采用session机制是不利于扩展的,用户认证之后,服务端做认证记录,如果认证的记录被保存在内存中的话,这意味着用户下次请求还必须要请求在这台服务器上,这样才能拿到授权的资源,这样在分布式的应用上,相应的限制了负载均衡器的能力。这也意味着限制了应用的扩展能力。 在前后端分离的项目中 一般使用token机制来进行用户认证管理,即token oauth。一般应用于app,vue,react,angular等项目中使用。基于token的鉴权机制类似于http协议也是无状态的,它不需要在服务端去保留用户的认证信息或者会话信息。这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利。token oauth的优势在于支持跨域访问,服务端易于扩展,适用于移动端,更重要的一点在于解耦,可以适用于多种项目。 基于token的认证机制还有一种JWT的方式,它是一个标准,更简洁,更安全常用于身份认证和信息交换。