千家信息网

Java如何实现角色权限后台脚手架系统

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章将为大家详细讲解有关Java如何实现角色权限后台脚手架系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Springboot框架+myBaits-Plus+
千家信息网最后更新 2026年11月01日Java如何实现角色权限后台脚手架系统

这篇文章将为大家详细讲解有关Java如何实现角色权限后台脚手架系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

Springboot框架+myBaits-Plus+MySQL实现的角色权限后台管理脚手架系统实战项目,实现的是所有系统最基础的后台管理功能,有了这个脚手架,以后开发别的项目就在这上面快速增加功能即可。本系统主要实现的功能有:菜单管理、角色管理、用户管理、登录、登出,不同的角色分配相应的权限,用户分配不同的角色登录后显示相应被分配的功能。

本系统采用前后端分离的思想设计,后端采用springboot微服务架构,主要包含一个网关服务和一个权限管理服务,开发其他功能可以再创建其他的微服务,前端采用vue+element-UI实现。

1.本系统开发所需的基础环境及版本:

软件版本
jdk1.8
MySQL5.7
maven3.6.1
nacos1.1.4
Redis5.0.10
Node14.17.3

系统控制器:

/** * 系统控制器 * @author yy * */@RequestMapping("/system")@Controllerpublic class SystemController {                         @Autowired        private OperaterLogService operaterLogService;                @Autowired        private UserService userService;                @Autowired        private DatabaseBakService databaseBakService;         @Autowired        private StaffService staffService;        @Autowired        private OrderAuthService orderAuthService;         private Logger log = LoggerFactory.getLogger(SystemController.class);                /**         * 登录页面         * @param model         * @return         */        @RequestMapping(value="/login",method=RequestMethod.GET)        public String login(Model model){                model.addAttribute("loginTypes", LoginType.values());                return "admin/system/login";        }                /**         * 用户登录提交表单处理方法         * @param request         * @param cpacha         * @return         */        @RequestMapping(value="/login",method=RequestMethod.POST)        @ResponseBody        public Result login(HttpServletRequest request,String username,String password,String cpacha,Integer type){                if(StringUtils.isEmpty(username)){                        return Result.error(CodeMsg.ADMIN_USERNAME_EMPTY);                }                if(StringUtils.isEmpty(password)){                        return Result.error(CodeMsg.ADMIN_PASSWORD_EMPTY);                }                 //表示实体信息合法,开始验证验证码是否为空                if(StringUtils.isEmpty(cpacha)){                        return Result.error(CodeMsg.CPACHA_EMPTY);                }                //说明验证码不为空,从session里获取验证码                Object attribute = request.getSession().getAttribute("admin_login");                if(attribute == null){                        return Result.error(CodeMsg.SESSION_EXPIRED);                }                //表示session未失效,进一步判断用户填写的验证码是否正确                if(!cpacha.equalsIgnoreCase(attribute.toString())){                        return Result.error(CodeMsg.CPACHA_ERROR);                }                 if(type == LoginType.ADMINISTRATOR.getCode()){                        //表示验证码正确,开始查询数据库,检验密码是否正确                        User findByUsername = userService.findByUsername(username);                        //判断是否为空                        if(findByUsername == null){                                return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);                        }                        //表示用户存在,进一步对比密码是否正确                        if(!findByUsername.getPassword().equals(password)){                                return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);                        }                        //表示密码正确,接下来判断用户状态是否可用                        if(findByUsername.getStatus() == User.ADMIN_USER_STATUS_UNABLE){                                return Result.error(CodeMsg.ADMIN_USER_UNABLE);                        }                        //检查用户所属角色状态是否可用                        if(findByUsername.getRole() == null || findByUsername.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){                                return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);                        }                        //检查用户所属角色的权限是否存在                        if(findByUsername.getRole().getAuthorities() == null || findByUsername.getRole().getAuthorities().size() == 0){                                return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);                        }                        //检查一切符合,可以登录,将用户信息存放至session                        request.getSession().setAttribute(SessionConstant.SESSION_USER_LOGIN_KEY, findByUsername);                        request.getSession().setAttribute("loginType",type);                         //销毁session中的验证码                        request.getSession().setAttribute("admin_login", null);                        //将登陆记录写入日志库                        operaterLogService.add("用户【"+username+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登录系统!");                        log.info("用户成功登录,user = " + findByUsername);                }else{                        Staff byJobNumber = staffService.findByNameAndIsStatus(username);                        //判断是否为空                        if(byJobNumber == null){                                return Result.error(CodeMsg.ADMIN_USERNAME_NO_EXIST);                        }                         //表示用户存在,进一步对比密码是否正确                        if(!byJobNumber.getPassword().equals(password)){                                return Result.error(CodeMsg.ADMIN_PASSWORD_ERROR);                        }                         //检查用户所属角色状态是否可用                        if(byJobNumber.getRole() == null || byJobNumber.getRole().getStatus() == Role.ADMIN_ROLE_STATUS_UNABLE){                                return Result.error(CodeMsg.ADMIN_USER_ROLE_UNABLE);                        }                         //检查用户所属角色的权限是否存在                        if(byJobNumber.getRole().getAuthorities() == null || byJobNumber.getRole().getAuthorities().size() == 0){                                return Result.error(CodeMsg.ADMIN_USER_ROLE_AUTHORITES_EMPTY);                        }                        //检查一切符合,可以登录,将用户信息存放至session                        request.getSession().setAttribute(SessionConstant.SESSION_STAFF_LOGIN_KEY, byJobNumber);                        request.getSession().setAttribute("loginType",type);                        //销毁session中的验证码                        request.getSession().setAttribute("admin_login", null);                        //将登陆记录写入日志库                        operaterLogService.add("用户【"+username+"】于【" + StringUtil.getFormatterDate(new Date(), "yyyy-MM-dd HH:mm:ss") + "】登录系统!");                        log.info("员工成功登录,user = " + byJobNumber);                }                 return Result.success(true);        }                /**         * 登录成功后的系统主页         * @param model         * @return         */        @RequestMapping(value="/index")        public String index(Model model){                model.addAttribute("operatorLogs", operaterLogService.findLastestLog(10));                model.addAttribute("userTotal", userService.total());                model.addAttribute("operatorLogTotal", operaterLogService.total());                model.addAttribute("databaseBackupTotal", databaseBakService.total());                model.addAttribute("onlineUserTotal", SessionListener.onlineUserCount);                return "admin/system/index";        }                /**         * 注销登录         * @return         */        @RequestMapping(value="/logout")        public String logout(){                Integer loginType = (Integer) SessionUtil.get("loginType");                if(loginType == LoginType.ADMINISTRATOR.getCode()){                        User loginedUser = SessionUtil.getLoginedUser();                        if(loginedUser != null){                                SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, null);                        }                }else if(loginType == LoginType.STAFF.getCode()){                        Staff loginedStaff = SessionUtil.getLoginedStaff();                        if(loginedStaff != null){                                SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY,null);                        }                }                return "redirect:login";        }                /**         * 无权限提示页面         * @return         */        @RequestMapping(value="/no_right")        public String noRight(){                return "admin/system/no_right";        }                /**         * 修改用户个人信息         * @return         */        @RequestMapping(value="/update_userinfo",method=RequestMethod.GET)        public String updateUserInfo(){                return "admin/system/update_userinfo";        }                /**         * 修改个人信息保存         * @param user         * @return         */        @RequestMapping(value="/update_userinfo",method=RequestMethod.POST)        public String updateUserInfo(User user){                User loginedUser = SessionUtil.getLoginedUser();                loginedUser.setEmail(user.getEmail());                loginedUser.setMobile(user.getMobile());                loginedUser.setHeadPic(user.getHeadPic());                //首先保存到数据库                userService.save(loginedUser);                //更新session里的值                SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);                return "redirect:update_userinfo";        }                /**         * 修改密码页面         * @return         */        @RequestMapping(value="/update_pwd",method=RequestMethod.GET)        public String updatePwd(){                return "admin/system/update_pwd";        }                /**         * 修改密码表单提交         * @param oldPwd         * @param newPwd         * @return         */        @RequestMapping(value="/update_pwd",method=RequestMethod.POST)        @ResponseBody        public Result updatePwd(@RequestParam(name="oldPwd",required=true)String oldPwd,                        @RequestParam(name="newPwd",required=true)String newPwd                        ){                Integer loginType = (Integer) SessionUtil.get("loginType");                if(loginType == LoginType.ADMINISTRATOR.getCode()){                        User loginedUser = SessionUtil.getLoginedUser();                        if(!loginedUser.getPassword().equals(oldPwd)){                                return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);                        }                        if(StringUtils.isEmpty(newPwd)){                                return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);                        }                        if(newPwd.length()<4 || newPwd.length()>32){                                return Result.error(CodeMsg.ADMIN_USER_PWD_LENGTH_ERROR);                        }                        loginedUser.setPassword(newPwd);                        //保存数据库                        userService.save(loginedUser);                        //更新session                        SessionUtil.set(SessionConstant.SESSION_USER_LOGIN_KEY, loginedUser);                }else{                        Staff loginedStaff = SessionUtil.getLoginedStaff();                         Staff staff = staffService.find(loginedStaff.getId());                        if(!staff.getPassword().equals(oldPwd)){                                return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_ERROR);                        }                        if(StringUtils.isEmpty(newPwd)){                                return Result.error(CodeMsg.ADMIN_USER_UPDATE_PWD_EMPTY);                        }                         staff.setPassword(newPwd);                         CodeMsg codeMsg = ValidateEntityUtil.validate(staff);                        if (codeMsg.getCode() != CodeMsg.SUCCESS.getCode()){                                return Result.error(codeMsg);                        }                         loginedStaff.setPassword(newPwd);                        //保存数据库                        staffService.save(loginedStaff);                        //更新session                        SessionUtil.set(SessionConstant.SESSION_STAFF_LOGIN_KEY, loginedStaff);                }                 return Result.success(true);        }                /**         * 日志管理列表         * @param model         * @param operaterLog         * @param pageBean         * @return         */        @RequestMapping(value="/operator_log_list")        public String operatorLogList(Model model,OperaterLog operaterLog,PageBean pageBean){                model.addAttribute("pageBean", operaterLogService.findList(operaterLog, pageBean));                model.addAttribute("operator", operaterLog.getOperator());                model.addAttribute("title", "日志列表");                return "admin/system/operator_log_list";        }        /**         * 验证订单         * @param orderSn         * @param phone         * @return         */        @RequestMapping(value="/auth_order",method=RequestMethod.POST)        @ResponseBody        public Result authOrder(@RequestParam(name="orderSn",required=true)String orderSn,@RequestParam(name="phone",required=true)String phone){                 OrderAuth orderAuth = new OrderAuth();                orderAuth.setMac(StringUtil.getMac());                orderAuth.setOrderSn(orderSn);                orderAuth.setPhone(phone);                orderAuthService.save(orderAuth);                AppConfig.ORDER_AUTH = 1;                return Result.success(true);        }         /**         * 删除操作日志,可删除多个         * @param ids         * @return         */        @RequestMapping(value="/delete_operator_log",method=RequestMethod.POST)        @ResponseBody        public Result delete(String ids){                if(!StringUtils.isEmpty(ids)){                        String[] splitIds = ids.split(",");                        for(String id : splitIds){                                operaterLogService.delete(Long.valueOf(id));                        }                }                return Result.success(true);        }                /**         * 清空整个日志         * @return         */        @RequestMapping(value="/delete_all_operator_log",method=RequestMethod.POST)        @ResponseBody        public Result deleteAll(){                operaterLogService.deleteAll();                return Result.success(true);        }}

后台用户管理控制器:

/** * 后台用户管理控制器 * @author yy * */@RequestMapping("/admin/user")@Controllerpublic class UserController {         @Autowired        private UserService userService;        @Autowired        private RoleService roleService;        @Autowired        private OperaterLogService operaterLogService;        /**         * 用户列表页面         * @param model         * @param user         * @param pageBean         * @return         */        @RequestMapping(value="/list")        public String list(Model model,User user,PageBean pageBean){                model.addAttribute("title", "用户列表");                model.addAttribute("username", user.getUsername());                model.addAttribute("pageBean", userService.findList(user, pageBean));                return "admin/user/list";        }                /**         * 新增用户页面         * @param model         * @return         */        @RequestMapping(value="/add",method=RequestMethod.GET)        public String add(Model model){                model.addAttribute("roles", roleService.findAll());                return "admin/user/add";        }                /**         * 用户添加表单提交处理         * @param user         * @return         */        @RequestMapping(value="/add",method=RequestMethod.POST)        @ResponseBody        public Result add(User user){                //用统一验证实体方法验证是否合法                CodeMsg validate = ValidateEntityUtil.validate(user);                if(validate.getCode() != CodeMsg.SUCCESS.getCode()){                        return Result.error(validate);                }                if(user.getRole() == null || user.getRole().getId() == null){                        return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);                }                //判断用户名是否存在                if(userService.isExistUsername(user.getUsername(), 0l)){                        return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);                }                //到这说明一切符合条件,进行数据库新增                if(userService.save(user) == null){                        return Result.error(CodeMsg.ADMIN_USE_ADD_ERROR);                }                operaterLogService.add("添加用户,用户名:" + user.getUsername());                return Result.success(true);        }                /**         * 用户编辑页面         * @param model         * @return         */        @RequestMapping(value="/edit",method=RequestMethod.GET)        public String edit(Model model,@RequestParam(name="id",required=true)Long id){                model.addAttribute("roles", roleService.findAll());                model.addAttribute("user", userService.find(id));                return "admin/user/edit";        }                /**         * 编辑用户信息表单提交处理         * @param user         * @return         */        @RequestMapping(value="/edit",method=RequestMethod.POST)        @ResponseBody        public Result edit(User user){                //用统一验证实体方法验证是否合法                CodeMsg validate = ValidateEntityUtil.validate(user);                if(validate.getCode() != CodeMsg.SUCCESS.getCode()){                        return Result.error(validate);                }                if(user.getRole() == null || user.getRole().getId() == null){                        return Result.error(CodeMsg.ADMIN_USER_ROLE_EMPTY);                }                if(user.getId() == null || user.getId().longValue() <= 0){                        return Result.error(CodeMsg.ADMIN_USE_NO_EXIST);                }                if(userService.isExistUsername(user.getUsername(), user.getId())){                        return Result.error(CodeMsg.ADMIN_USERNAME_EXIST);                }                //到这说明一切符合条件,进行数据库保存                User findById = userService.find(user.getId());                //讲提交的用户信息指定字段复制到已存在的user对象中,该方法会覆盖新字段内容                BeanUtils.copyProperties(user, findById, "id","createTime","updateTime");                if(userService.save(findById) == null){                        return Result.error(CodeMsg.ADMIN_USE_EDIT_ERROR);                }                operaterLogService.add("编辑用户,用户名:" + user.getUsername());                return Result.success(true);        }                /**         * 删除用户         * @param id         * @return         */        @RequestMapping(value="/delete",method=RequestMethod.POST)        @ResponseBody        public Result delete(@RequestParam(name="id",required=true)Long id){                try {                        userService.delete(id);                } catch (Exception e) {                        return Result.error(CodeMsg.ADMIN_USE_DELETE_ERROR);                }                operaterLogService.add("删除用户,用户ID:" + id);                return Result.success(true);        }}

后台角色管理控制器:

/** * 后台角色管理控制器 * @author yy * */@RequestMapping("/admin/role")@Controllerpublic class RoleController {                 private Logger log = LoggerFactory.getLogger(RoleController.class);                @Autowired        private MenuService menuService;                @Autowired        private OperaterLogService operaterLogService;                @Autowired        private RoleService roleService;                /**         * 分页搜索角色列表         * @param model         * @param role         * @param pageBean         * @return         */        @RequestMapping(value="/list")        public String list(Model model,Role role,PageBean pageBean){                model.addAttribute("title", "角色列表");                model.addAttribute("name", role.getName());                model.addAttribute("pageBean", roleService.findByName(role, pageBean));                return "admin/role/list";        }                /**         * 角色添加页面         * @param model         * @return         */        @RequestMapping(value="/add",method=RequestMethod.GET)        public String add(Model model){                List findAll = menuService.findAll();                model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));                model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));                model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll));                return "admin/role/add";        }                /**         * 角色添加表单提交处理         * @param role         * @return         */        @RequestMapping(value="/add",method=RequestMethod.POST)        @ResponseBody        public Result add(Role role){                //用统一验证实体方法验证是否合法                CodeMsg validate = ValidateEntityUtil.validate(role);                if(validate.getCode() != CodeMsg.SUCCESS.getCode()){                        return Result.error(validate);                }                if(roleService.save(role) == null){                        return Result.error(CodeMsg.ADMIN_ROLE_ADD_ERROR);                }                log.info("添加角色【"+role+"】");                operaterLogService.add("添加角色【"+role.getName()+"】");                return Result.success(true);        }                /**         * 角色编辑页面         * @param id         * @param model         * @return         */        @RequestMapping(value="/edit",method=RequestMethod.GET)        public String edit(@RequestParam(name="id",required=true)Long id,Model model){                List findAll = menuService.findAll();                model.addAttribute("topMenus",MenuUtil.getTopMenus(findAll));                model.addAttribute("secondMenus",MenuUtil.getSecondMenus(findAll));                model.addAttribute("thirdMenus",MenuUtil.getThirdMenus(findAll));                Role role = roleService.find(id);                model.addAttribute("role", role);                model.addAttribute("authorities",JSONArray.toJSON(role.getAuthorities()).toString());                return "admin/role/edit";        }                /**         * 角色修改表单提交处理         * @param request         * @param role         * @return         */        @RequestMapping(value="/edit",method=RequestMethod.POST)        @ResponseBody        public Result edit(Role role){                //用统一验证实体方法验证是否合法                CodeMsg validate = ValidateEntityUtil.validate(role);                if(validate.getCode() != CodeMsg.SUCCESS.getCode()){                        return Result.error(validate);                }                Role existRole = roleService.find(role.getId());                if(existRole == null){                        return Result.error(CodeMsg.ADMIN_ROLE_NO_EXIST);                }                existRole.setName(role.getName());                existRole.setRemark(role.getRemark());                existRole.setStatus(role.getStatus());                existRole.setAuthorities(role.getAuthorities());                if(roleService.save(existRole) == null){                        return Result.error(CodeMsg.ADMIN_ROLE_EDIT_ERROR);                }                log.info("编辑角色【"+role+"】");                operaterLogService.add("编辑角色【"+role.getName()+"】");                return Result.success(true);        }                /**         * 删除角色         * @param request         * @param id         * @return         */        @RequestMapping(value="delete",method=RequestMethod.POST)        @ResponseBody        public Result delete(@RequestParam(name="id",required=true)Long id){                try {                        roleService.delete(id);                } catch (Exception e) {                        // TODO: handle exception                        return Result.error(CodeMsg.ADMIN_ROLE_DELETE_ERROR);                }                log.info("编辑角色ID【"+id+"】");                operaterLogService.add("删除角色ID【"+id+"】");                return Result.success(true);        }}

关于"Java如何实现角色权限后台脚手架系统"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

用户 角色 验证 系统 登录 管理 后台 权限 页面 信息 密码 控制器 数据 数据库 方法 日志 表单 控制 检查 合法 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海挚品互联网科技有限公司 互联网科技财经 互联网科技的 互联网科技公司电话 美国互联网黑科技 广州善班互联网科技 互联网科技公司有哪些 科技大学互联网专业好不好 济南和联互联网科技有限公司 广州慧亚互联网科技怎么样 银川新华互联网科技职业技术培训学校图片 移动互联网科技股 互联网科技项目计划书材料类 乌苏新华互联网科技做什么的 翼展科技 首家互联网医院 互联网在线教育科技创业 工业互联网山东科技大学 山东子淼互联网科技有限公司 互联网营销推广黑科技 互联网时代科技型公司的机会 港股互联网科技股 互联网科技与金融科技 丰台科技园 互联网 左右互联网络科技 互联网科技实习生岗位职责 互联网科技和信息 广州千川互联网科技有限公司 卡尔迅互联网科技有限公司 南京一网一红互联网科技有限公司 易租星互联网科技有限公司
0