Java Web用户角色与权限的管理

suaxi
2020-06-01 / 0 评论 / 90 阅读 / 正在检测是否收录...

以SSM框架为例
后台管理系统——给用户添加角色流程分析与设计

1.流程分析
addRoleToUser_01.png
注:图片来源itheima的ssm课件

2.UserController

    //给用户添加角色
    @RequestMapping("/addRoleToUser.do")
    public String addRoleToUser(@RequestParam(name = "userId",required = true) Integer userId,@RequestParam(name = "ids",required = true) Integer[] roleIds){
        //单个用户可以对应多个角色,所以采用数组存userService.findOtherRoles(id)查询出来的角色id
        userService.addRoleToUser(userId,roleIds);
        return "redirect:findAll.do";
    }
    //查询用户以及用户可以添加的角色
    @RequestMapping("/findUserByIdAndAllRole.do")
    public ModelAndView findUserByIdAndAllRole(@RequestParam(name = "id",required = true) Integer id){
        ModelAndView mv = new ModelAndView();
        //1.根据用户id查询用户
        Userinfo userinfo = userService.findById(id);
        //2.根据用户id查询可以添加的角色
        List<Role> roles = userService.findOtherRoles(id);
        mv.addObject("user",userinfo);
        mv.addObject("roleList",roles);
        mv.setViewName("user-role-add");
        return mv;
    }

addRoleToUser_02.png

3.UserService接口

void addRoleToUser(Integer userId, Integer[] roleIds);

addRoleToUser_03.png

4.UserServiceImpl

   //给用户添加角色
   @Override
   public void addRoleToUser(Integer userId, Integer[] roleIds) {
        for (Integer roleId : roleIds) {
            //(单个用户可以对应多个角色)给用户添加角色时,从数组中遍历取出角色id
            userDao.addRoleToUser(userId,roleId);
        }
    }

    //根据用户id查询可以添加的角色
    @Override
    public List<Role> findOtherRoles(Integer id) {
        return userDao.findOtherRoles(id);
}

addRoleToUser_04.png

5.UserDao
//查询用户可以添加的角色

@Select("select * from role where id not in(select roleId from users_role where userId=#{id})")
List<Role> findOtherRoles(Integer id);

@Insert("insert into users_role(userId,roleId) values(#{userId},#{roleId})")
//当传入mybatis的参数有多个时,必须写@Param
void addRoleToUser(@Param("userId") Integer userId,@Param("roleId") Integer roleId);

addRoleToUser_05.png

注:添加权限与添加角色同理

0

评论 (0)

取消