Spring Boot + Vue 先后端分离开发,权限管理的一点思路前端
在传统的先后端不分的开发中,权限管理主要经过过滤器或者拦截器来进行(权限管理框架自己也是经过过滤器来实现功能),若是用户不具有某一个角色或者某一个权限,则没法访问某一个页面。后端
可是在先后端分离中,页面的跳转通通交给前端去作,后端只提供数据,这种时候,权限管理不能再按照以前的思路来。安全
首先要明确一点,前端是展现给用户看的,全部的菜单显示或者隐藏目的不是为了实现权限管理,而是为了给用户一个良好的体验,不能依靠前端隐藏控件来实现权限管理,即数据安全不能依靠前端。架构
这点就像普通的表单提交同样,前端作数据校验是为了提升效率,提升用户体验,后端才是真正的确保数据完整性。框架
因此,真正的数据安全管理是在后端实现的,后端在接口设计的过程当中,就要确保每个接口都是在知足某种权限的基础上才能访问,也就是说,不怕将后端数据接口地址暴露出来,即便暴露出来,只要你没有相应的角色,也是访问不了的。前后端分离
前端为了良好的用户体验,须要将用户不能访问的接口或者菜单隐藏起来。微服务
有人说,若是用户直接在地址拦输入某一个页面的路径,怎么办?此时,若是没有作任何额外的处理的话,用户确实能够经过直接输入某一个路径进入到系统中的某一个页面中,可是,不用担忧数据泄露问题,由于没有相关的角色,就没法访问相关的接口。设计
可是,若是用户非这样操做,进入到一个空白的页面,用户体验很差,此时,咱们能够使用 Vue 中的前置路由导航守卫,来监听页面跳转,若是用户想要去一个未获受权的页面,则直接在前置路由导航守卫中将之拦截下来,重定向到登陆页,或者直接就停留在当前页,不让用户跳转,也能够顺手再给用户一点点未获受权的提示信息。接口
总而言之一句话,前端的全部操做,都是为了提升用户体验,不是为了数据安全,真正的权限校验要在后端来作,后端若是是 SSM 架构,建议使用 Shiro ,若是是 Spring Boot + 微服务,建议使用 Spring Security 。路由