un7.1:如何根据用户id查询角色?如何给角色分配权限功能?

    在idea中,我们可能会遇到多表联查的情况,今天我就给大家分享一个简单便捷的方法,实现根据用户id查询角色,以及根据角色id查询权限功能,以及给角色分配权限功能,权限功能也叫菜单、资源等。

    老规矩,我们先来说一下需要的软件,后端代码我一般都用idea。浏览器我选择了火狐。

    话不多说,我们开始!

    这两种实现其实差不多,首先,我们来完成根据用户id查询角色。

一、将数据库的数据进行填充。

1、authuser表填充,不用太多,几个就可以,如下图:

2、authrole 表填充,这个可以多一点,前面写的还可以,后面我就随便写了点,如下图:

3、authuserrole表填充,因为是user和role的关联表,我这里只写了userid和roleid,如下图:

 

 二、完成后端的一些代码。

1、在IAuthRoleMapper接口中写好方法声明。

public List<AuthRole> selectBUserRoleByUid(int uid);

2、在AuthRoleMapper.xml中添加sql语句,代码如下:

<select id="selectBUserRoleByUid" resultMap="BaseResultMap" parameterType="int">
    select * from auth_role where id IN(SELECT roleid from auth_user_role where userid=#{uid})
</select>

3、在IAuthRoleService接口中声明方法,将uid传入,代码如下:

public List<AuthRole> selectUserRolesByUid(int uid);

4、在AuthRoleServiceImpl实现类中实现此方法,代码如下:

@Override
    public List<AuthRole> selectUserRolesByUid(int uid) {
       return authRoleMapper.selectBUserRoleByUid(uid);
    }

5、在AuthRoleController中进行页面判断,代码如下:

//根据id查询角色
    @GetMapping("/user_role_list")
    @ResponseBody
    @CrossOrigin(origins = "*")//允许跨元请求
     public HttpResult getUserRolesByUid(int uid){
        List<AuthRole> list=authRoleService.selectUserRolesByUid(uid);
        return new HttpResult(200,null,list,0);
    }

三、打开浏览器输入网址和参数直接进行测试。

在这里我传入了uid为1的用户,查到了两个角色,如此,我实现了根据用户的id查询角色。

根据角色id查询权限功能也是一样的步骤,大家照着做就可以啦!

记下来,我们根据角色的id分配权限功能,这个就更简单啦,我们只需要在接口中声明,再在实现类中进行实现,最后在controller中进行数据的接收与传送就可以啦!接下来,跟着我一起完成吧!

一、首先,在IAuthRoleResService声明方法,这里我把类名和包名都复制上了,需要注意哦。

package com.xiaohui.cms.service;

public interface IAuthRoleResService {
    /**
     * 给角色分配权限功能
     * @param rid
     * @param resIds
     */
    public boolean assignRes(int rid,int[] resIds);
}

二、在AuthRoleResServiceImpl实现类中进行实现,在这里要注意细节,比如注解、方法名称,转入的参数,都要仔细核对清楚,确保无误。

package com.xiaohui.cms.service.impl;

import com.xiaohui.cms.dao.role.AuthRoleResMapper;
import com.xiaohui.cms.entity.role.AuthRoleRes;
import com.xiaohui.cms.service.IAuthRoleResService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

@Service
public class AuthRoleResServiceImpl implements IAuthRoleResService {
    @Autowired(required = false)
    private AuthRoleResMapper authRoleResMapper;
    @Override
    public boolean assignRes(int rid, int[] resIds) {
        try {
            AuthRoleRes roleRes = new AuthRoleRes();
            roleRes.setRoleid(rid);
            int rows = authRoleResMapper.delete(roleRes);
            for (int resid : resIds) {
                AuthRoleRes param = new AuthRoleRes();
                param.setRoleid(rid);
                param.setResid(resid);
                authRoleResMapper.insert(param);
            }
            return true;
        } catch (Exception e) {
            e.printStackTrace();
        }
        return false;
    }
}

三、在AuthRoleController中完成数据的接收与传送。

/**
     * 给角色分配功能权限
     * @return
     */
    @GetMapping("/assign_res")
    @ResponseBody
    @CrossOrigin(origins = "*")
    public HttpResult assignRes(int rid,int[] resIds){
        boolean idOk=authRoleResService.assignRes(rid,resIds);
        if (idOk){
            return new HttpResult(200,null,"角色分配成功",0);
        }else {
            return new HttpResult(500,"分配失败,请重新分配",null,0);
        }
    }

四、打开火狐浏览器进行测试,注意传入参数哦!

只要浏览器上显示角色分配成功的参数,我们就算完成了这项功能了,而给用户分配角色也是一样的步骤,大家一定要学会举一反三。

文章到这里就结束了,希望可以帮到大家,大家加油。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小格子衬衫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值