开源框架若依中的权限控制逻辑-路由生成的后端接口
从菜单的前端到后端
在上一篇文章《开源框架若依中的权限控制逻辑-菜单》中,我们介绍了若依系统中的菜单管理的相关操作,最后遗留了一个小问题,为什么菜单的“路由参数”设置为非空时,菜单不会在左侧出现。今天我们就来深入的看看若依系统的菜单返回逻辑与后台数据设计。
接口捕获
我们打开若依系统,刷新页面,通过浏览器调试窗口看看调用了哪些网络请求:
在若依首页,我们F12打开浏览器调试窗口,并切换到“网络”页面,勾选过滤条件“Fetch/XHR”,然后刷新页面。捕获的请求如下图所示:
我们依次查看各个请求分别获取了什么信息。
getInfo
getInfo的全部请求信息如下:
请求网址: http://localhost/dev-api/getInfo, 请求方法: GET。
请求标头包括Authorization,Cookie等信息。
返回信息如下:
1 | { |
其返回信息主要包括:权限permissions, 角色roles,当前登录用户信息user,user中又包括当前用户的基础信息,部门信息,角色信息等。
我们后台来查看其接口执行逻辑。
1 | /** |
首先,通过Spring-Security来根据登录token信息获取用户信息,即:
1 | SysUser user = SecurityUtils.getLoginUser().getUser(); |
我们依次深入方法,其调用链条:
1 | SecurityContextHolder.getContext().getAuthentication().getLoginUser() |
其设置位置位于过滤器中:
1 | package com.ruoyi.framework.security.filter; |
在token转换为用户信息的关键代码是:
1 | LoginUser loginUser = tokenService.getLoginUser(request); |
其方法体为:
1 | /** |
如此,便通过将token转换为了保存在redis中的用户信息。