1.Restful的web安全与传统MVC的web安全区别
我们知道现今有很多安全框架可供我们使用,比如Spring Security、Shrio等。但是过去很多应用在使用他们进行web安全拦截的时候都是基于mvc架构,并没有实现前后端真正的完全分离,他们可以直接在服务端控制页面的渲染呈现和拦截。
但是考虑到前后端完全分离后,服务端只负责业务,并不负责页面的呈现,页面的呈现完全交由前端来做(实际上也并不是完全,因为页面的相关数据还是来自后端),那么在这种情况下,想实现web安全,即用户是否有权限访问这个页面,就需要由前端来做拦截了,但是需要考虑的一点是权限控制离不开数据库(比如用户角色表),所以光是依靠前端则无法完成这一功能,需要和后端配合。
2.实现方案
-
首先考虑一个场景,用户分为普通用户和管理员用户,对于不同的用户,登录后所看到的的页面应该是不一样的,如何实现这一功能呢?
可以肯定的是前端需要根据返回来的用户角色,决定需要给用户展现的页面。有两种途径实现这一方案:
① 一是由后端查询数据库中的用户角色表返回该用户的信息和可以访问的所有资源(页面、数据等)的Json数据,比如:[ { "id": 2, "path": "/home", "component": "Home", "name": "普通用户", "child