SpringBoot-Shiro-Vue 前后端分离实现权限认证

思路,前后端分离权限验证与普通Web服务的权限验证有啥不同,其实就一个:前后端变成了只交互数据,展开来说,是后端少了两个对前端的控制:

页面路由

页面DOM

       所以针对普通的web服务,需要做出如下修改:

 

1.路由相关:

1】未验证页面不能直接Shiro跳转,而是返回未登录错误,由前端实现

shiroFilterFactoryBean.setLoginUrl("/unauth");

@RequestMapping("/unauth")

@ResponseBody

public Result unauth(){

    Result result = new Result(100);

    result.message = "未登录";

    return result;

}

 

2】配置所有URL为不需要登录验证,而由前端根据后端返回的权限数据来路由(别和不需要权限验证混了,只是因为路由不需要后端来做而已,所有需要权限验证的业务逻辑都需要有权限较验)

filterChainDefinitionMap.put("/", "anon");

 

3】前端需要根据返回的权限数据进行路由配置,具体到Vue使用Vue router的addRoutes动态添加路由

 

 

 

2.DOM相关前端根据 后端返回的 权限数据 决定 菜单  按钮的展示

 

 

3.跨域,这个是前后端分离带来的新问题(如果分开部署)后端需要配置允许跨域(添加@CrossOrigin或使用Filter)