vue后端必须接口吗_VUE学习笔记——导航菜单加载后端接口

d6a8a5dbb4287d9412d5e48e8c266afb.png

数据表关系

涉及数据表

94d5eb2b6dd8fd260a669ad3645416cd.png

关联关系

关联关系关联表关联字段
用户角色关联USER_ROLEid
角色菜单关联ROLE_MENUid

后端接口

涉及实体

菜单类(Menu)

public class Menu {    private Integer id;    private String url;    private String path;    private String component;    private String name;    private String iconCls;    private List
children; private List menuRoles; private Meta meta; private Integer parentId; private Boolean enabled; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url == null ? null : url.trim(); } public String getPath() { return path; } public void setPath(String path) { this.path = path == null ? null : path.trim(); } public String getComponent() { return component; } public void setComponent(String component) { this.component = component == null ? null : component.trim(); } public String getName() { return name; } public void setName(String name) { this.name = name == null ? null : name.trim(); } public String getIconCls() { return iconCls; } public void setIconCls(String iconCls) { this.iconCls = iconCls; } public Integer getParentId() { return parentId; } public void setParentId(Integer parentId) { this.parentId = parentId; } public Boolean getEnabled() { return enabled; } public void setEnabled(Boolean enabled) { this.enabled = enabled; } public Meta getMeta() { return meta; } public void setMeta(Meta meta) { this.meta = meta; } public List getChildren() { return children; } public void setChildren(List children) { this.children = children; } public List getMenuRoles() { return menuRoles; } public void setMenuRoles(List menuRoles) { this.menuRoles = menuRoles; }}

菜单额外信息(Meta)

public class Meta {    private Boolean keepAlive;    private Boolean requireAuth;    public Boolean getKeepAlive() {        return keepAlive;    }    public void setKeepAlive(Boolean keepAlive) {        this.keepAlive = keepAlive;    }    public Boolean getRequireAuth() {        return requireAuth;    }    public void setRequireAuth(Boolean requireAuth) {        this.requireAuth = requireAuth;    }}

角色信息(Role)

public class Role {    private Integer id;    private String name;    private String nameZh;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name == null ? null : name.trim();    }    public String getNameZh() {        return nameZh;    }    public void setNameZh(String nameZh) {        this.nameZh = nameZh;    }}

MenuMapper.xml

                                                                                                                                                    

获取登录用户

SecurityContext

SpringSecurity中使用SecurityContext保存当前通过认证的登录用户信息(Authentication,包含当前登录用户及用户权限)。

public interface SecurityContext extends Serializable {    Authentication getAuthentication();    void setAuthentication(Authentication var1);}

setAuthentication(Authentication):用于在安全上下文(SecurityContext)中设置通过认证的登录用户信息。

getAuthentication():用于在安全上下文(SecurityContext)中获取通过认证的登录用户信息。

SecurityContextHolder

SecurityContextHolder为工具类,用于保存安全上下文(SecurityContext)对象,在SecurityContextHolder中通过getContext()获取安全上下文。

 public static SecurityContext getContext() {        return strategy.getContext();    }

获取到安全上下文(SecurityContext)后,通过.getAuthentication().getPrincipal()SpringSecurity中获取当前登录用户对象。

((User) SecurityContextHolder.getContext().getAuthentication().getPrincipal())

根据登录人员查询可访问菜单资源

MenuMapper

List
getMenuByHrId(Integer hrId);

MenuMapper.xml

  <select id="getMenuByHrId" resultMap="Menus2">    select DISTINCT m1.*,m2.component as component2,m2.enabled as enabled2,m2.iconCls as iconCls2,m2.keepAlive as keepAlive2,m2.`name` as name2,m2.parentId as parentId2,m2.requireAuth as requireAuth2,m2.path as path2 from menu m1,menu m2,user_role urole,menu_role mr where m1.id=m2.parentId and urole.userid=#{userid}  and urole.rid=mr.rid and mr.mid=m2.id and m2.enabled=true ORDER BY m1.id,m2.id  select>

对用户角色关联表(user_role)、角色菜单关联表(menu_role)、菜单表(menu)进行关联查询,获取当前登录用户可访问菜单资源。先根据登录用户标识(从SpringSecurity中获取当前登录用户,获取用户标识),从user_role表根据用户标识匹配用户对应角色(role_id);在根据角色标识(role_id)从menu_role表匹配角色对应拥有的访问菜单权限。

MenuService

 public List
getMenuByHrId() { /** * 从SpringSecurity中获取当前登录用户,根据当前登录用户获取用户Id * SecurityContextHolder.getContext() * .getAuthentication().getPrincipal():从SpringSecurity中获取当前登录用户对象 */ return menuMapper.getMenuByHrId(((User) SecurityContextHolder.getContext() .getAuthentication().getPrincipal()).getId()); }

导航菜单加载接口

@RestController@RequestMapping("/system/menuInit")public class MenuInitController {   @Autowired    MenuService menuService;    @RequestMapping("/initMenu")    public List
getMenuByHrId() { return menuService.getMenuByHrId(); }}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值