当前位置: 首页 > news >正文

孝感住房和城乡建设部网站黑龙江省建设厅的网站

孝感住房和城乡建设部网站,黑龙江省建设厅的网站,政协网站法治建设,东营seo整站优化基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 本文想基于Ant DesignPro Vue构建的前端SpringBoot实现的后端接口服务#xff0c;实现前后端分离开发和独立运行#xff0c;业务场景是登录认证#xff0c;认证成功后返回该用户相应权限范围内可见的…基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 本文想基于Ant DesignPro Vue构建的前端SpringBoot实现的后端接口服务实现前后端分离开发和独立运行业务场景是登录认证认证成功后返回该用户相应权限范围内可见的菜单。 Ant Design Pro相关系列文章 一、AntDesign Pro安装过程 二、基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单-前端部分 三、基于Ant DesignPro实现通过SpringBoot后台加载自定义菜单-SpringBoot后端部分 四、搭建Vue版Ant Design Pro后台管理系统 五、基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离 目录基于Ant DesignPro Vue实现通过SpringBoot后台加载自定义菜单- 前后端分离一、通过Ant DesignPro Vue构建前端二、Ant DesignPro Vue前端对接后台服务接口1、去掉Mock2、vue.config.js 中配置api代理3、修改菜单加载是从后台服务接口请求三、创建Ant DesignPro后台服务SpringBoot项目1. File-New-Project2.编辑pom.xml添加需要的依赖3.编辑application.properties4.创建依赖的实体类4.1 登录请求实体类UserLoginDto.java4.2 向前端画面传输的用户信息实体类 UserVo.java4.3 菜单实体类MenuVo.java4.4 菜单项实体类MenuMetaVo.java5.创建登录认证/api/auth/接口响应处理类6.创建用户/api/user/接口响应处理类7.创建Account/api/account接口响应处理类四、验证1.启动服务端2.启动前端3.访问前端画面一、通过Ant DesignPro Vue构建前端 参见 搭建Vue版Ant Design Pro后台管理系统 二、Ant DesignPro Vue前端对接后台服务接口 1、去掉Mock 编辑src/main.js把mock注释 2、vue.config.js 中配置api代理 说明 上面target配置属性是指后台服务接口URL默认格式为target指定的Ulr/api/请求接口 3、修改菜单加载是从后台服务接口请求 三、创建Ant DesignPro后台服务SpringBoot项目 1. File-New-Project 2.编辑pom.xml添加需要的依赖 ?xml version1.0 encodingUTF-8? project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.5/versionrelativePath//parentgroupIdcn.chinaelink.im/groupIdartifactIdmcvboot/artifactIdversion0.0.1-SNAPSHOT/versionnamemcboot/namedescriptionDemo project for Spring Boot/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependency!-- 热部署加入的引用1.spring-boot-devtools--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-devtools/artifactId/dependency!--json需要的依赖 --dependencygroupIdnet.sf.json-lib/groupIdartifactIdjson-lib-ext-spring/artifactIdversion1.0.2/version/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependency!--重点模板引擎用于显示网页需要的依赖,如果不需要将静态页面放入当前工程则不需要解注下面依赖--!-- 如果要在当前工程中加入静态页面首先需要解注下面依赖并在src/main/resources/目录下创建static和templates目录--!--dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-thymeleaf/artifactId/dependency--/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactIdconfigurationincludeSystemScopetrue/includeSystemScope/configuration/plugin/plugins/build /project3.编辑application.properties #配置管理服务端口号默认为8080 server.port8080 #服务访问路径 server.servlet.context-path/# 输出的log文件名 logging.file.namemc # 输出的文件的路径 logging.file.path./logs/mcv/ # 限制日志文件的大小 logging.file.max-size10MB # 日志的保存天数 logging.file.max-history7# 输出级别 logging.level.rootwarn logging.level.cn.com.hxyl.filebsdebug# xml配置文件 logging.configclasspath:logback-spring.xml#关闭缓存 #如果不需要将静态页面放入当前工程则不需要解注下面依赖 #如果要在当前工程中加入静态页面首先需要解注下面依赖并将静态页面文件放入src/main/resources/static/目录下 #spring.thymeleaf.cachefalse #spring.thymeleaf.prefixclasspath:/static/ server.tomcat.threads.max100 server.tomcat.threads.min-spare30#开启项目热部署 spring.devtools.restart.enabledtrue4.创建依赖的实体类 4.1 登录请求实体类UserLoginDto.java package cn.chinaelink.im.mcvboot.dto;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;AllArgsConstructor NoArgsConstructor Data public class UserLoginDto {// 用户名private String username;// 密码private String password;// 手机号private String mobile;// 验证码private String captcha; }4.2 向前端画面传输的用户信息实体类 UserVo.java package cn.chinaelink.im.mcvboot.vo;import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor;AllArgsConstructor NoArgsConstructor Data public class UserVo {private String id;private String name;private String username;private String password;private String avatar;private int status;private String telephone;private String lastLoginIp;private long lastLoginTime;private String creatorId;private long createTime;private int deleted;private String roleId;private String lang;private String token; }4.3 菜单实体类MenuVo.java package cn.chinaelink.im.mcvboot.vo.menu;import lombok.Data;Data public class MenuVo {private String name;private int id;private int parentId;private String component;private String redirect;private String path;private MenuMetaVo meta; }4.4 菜单项实体类MenuMetaVo.java package cn.chinaelink.im.mcvboot.vo.menu;import lombok.Data;Data public class MenuMetaVo {private String title;private String icon;private String target;private boolean show; }5.创建登录认证/api/auth/接口响应处理类 所以有接口实现都是参见src/mock/services/目录的相应的模拟接口js的结果定义的 AuthController类 import cn.chinaelink.im.mcvboot.dto.UserLoginDto; import cn.chinaelink.im.mcvboot.vo.UserVo; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import java.util.Optional; import java.util.Random; import java.util.UUID;Controller Slf4j RequestMapping(/api/auth) public class AuthController {PostMapping(/login)ResponseBodypublic String login(RequestBody UserLoginDto userLoginDto) {JSONObject resJson new JSONObject();if (Optional.ofNullable(userLoginDto.getUsername()).isPresent() (ant.design.equals(userLoginDto.getPassword()) ||admin.equals(userLoginDto.getUsername()))) {UserVo userVo getAdminUserVo();resJson.put(result,JSONObject.fromObject(userVo).toString());resJson.put(message,认证成功);resJson.put(code,200);resJson.put(_status, 200);resJson.put(token,userVo.getToken());return resJson.toString();} else if(Optional.ofNullable(userLoginDto.getMobile()).isPresent()){UserVo userVo getAdminUserVo();resJson.put(result,JSONObject.fromObject(userVo).toString());resJson.put(message,认证成功);resJson.put(code,200);resJson.put(_status, 200);resJson.put(token,userVo.getToken());return resJson.toString();}JSONObject result new JSONObject();result.put(isLogin, true);resJson.put(result,result);resJson.put(message,错误的用户名和密码请确认后重试);resJson.put(code,401);resJson.put(_status, 401);return resJson.toString();}PostMapping(/2step-code)ResponseBodypublic JSONObject twoFactor() {JSONObject resJson new JSONObject();JSONObject dataJson new JSONObject();dataJson.put(stepCode,new Random().nextInt(1));resJson.put(result, dataJson);return resJson;}PostMapping(/logout)ResponseBodypublic JSONObject logout() {JSONObject data new JSONObject();data.put(result, new JSONObject());data.put(message, );return data;}private UserVo getAdminUserVo() {UserVo userVo new UserVo();userVo.setId(UUID.randomUUID().toString());userVo.setName(超级管理员);userVo.setUsername(admin);userVo.setAvatar(https://gw.alipayobjects.com/zos/rmsportal/jZUIxmJycoymBprLOUbT.png);userVo.setStatus(1);userVo.setLastLoginTime(System.currentTimeMillis());userVo.setCreatorId(admin);userVo.setCreateTime(System.currentTimeMillis());userVo.setRoleId(admin);userVo.setLang(zh-CN);userVo.setToken(4291d7da9005377ec9aec4a71ea837f);return userVo;} }6.创建用户/api/user/接口响应处理类 package cn.chinaelink.im.mcvboot.controller.api;import cn.chinaelink.im.mcvboot.vo.menu.MenuMetaVo; import cn.chinaelink.im.mcvboot.vo.menu.MenuVo; import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONArray; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody;import java.util.ArrayList; import java.util.List;Controller Slf4j RequestMapping(/api/user) public class UserController {RequestMapping(/info)ResponseBodypublic JSONObject info(){JSONObject userInfoJson new JSONObject();userInfoJson.put(id, 4291d7da9005377ec9aec4a71ea837f);userInfoJson.put(name, 天野远子);userInfoJson.put(username, admin);userInfoJson.put(password, );userInfoJson.put(avatar, /avatar2.jpg);userInfoJson.put(status, 1);userInfoJson.put(telephone, );userInfoJson.put(lastLoginIp, 27.154.74.117);userInfoJson.put(lastLoginTime, 1534837621348L);userInfoJson.put(creatorId, admin);userInfoJson.put(createTime, 1497160610259L);userInfoJson.put(merchantCode, TLif2btpzg079h15bk);userInfoJson.put(deleted, 0);userInfoJson.put(roleId, admin);JSONObject roleObj new JSONObject();roleObj.put(id,admin);roleObj.put(name,管理员);roleObj.put(describe,拥有所有权限);roleObj.put(status, 1);roleObj.put(creatorId,system);roleObj.put(createTime,1497160610259L);roleObj.put(deleted, 0);JSONArray permissionArray new JSONArray();JSONObject permission1 new JSONObject();permission1.put(roleId,admin);permission1.put(permissionId,dashboard);permission1.put(permissionName,仪表盘);permission1.put(actions,[{\action\:\add\,\defaultCheck\:false,\describe\:\新增\},{\action\:\query\,\defaultCheck\:false,\describe\:\查询\},{\action\:\get\,\defaultCheck\:false,\describe\:\详情\},{\action\:\update\,\defaultCheck\:false,\describe\:\修改\},{\action\:\delete\,\defaultCheck\:false,\describe\:\删除\}]);JSONArray actionEntitySet new JSONArray();JSONObject actionEntity1 new JSONObject();actionEntity1.put(action, add);actionEntity1.put(describe, 新增);actionEntity1.put(defaultCheck, false);actionEntitySet.add(actionEntity1);JSONObject actionEntity2 new JSONObject();actionEntity2.put(action, query);actionEntity2.put(describe, 查询);actionEntity2.put(defaultCheck, false);actionEntitySet.add(actionEntity2);JSONObject actionEntity3 new JSONObject();actionEntity3.put(action, get);actionEntity3.put(describe, 详情);actionEntity3.put(defaultCheck, false);actionEntitySet.add(actionEntity3);JSONObject actionEntity4 new JSONObject();actionEntity4.put(action, update);actionEntity4.put(describe, 修改);actionEntity4.put(defaultCheck, false);actionEntitySet.add(actionEntity4);JSONObject actionEntity5 new JSONObject();actionEntity5.put(action, delete);actionEntity5.put(describe, 删除);actionEntity5.put(defaultCheck, false);actionEntitySet.add(actionEntity5);permission1.put(actionEntitySet, actionEntitySet);permission1.put(actionList, null);permission1.put(dataAccess, null);permissionArray.add(permission1);JSONObject permission2 new JSONObject();permission2.put(roleId,admin);permission2.put(permissionId,exception);permission2.put(permissionName,异常页面权限);permission2.put(actions,[{\action\:\add\,\defaultCheck\:false,\describe\:\新增\},{\action\:\query\,\defaultCheck\:false,\describe\:\查询\},{\action\:\get\,\defaultCheck\:false,\describe\:\详情\},{\action\:\update\,\defaultCheck\:false,\describe\:\修改\},{\action\:\delete\,\defaultCheck\:false,\describe\:\删除\}]);JSONArray actionEntitySet2 new JSONArray();JSONObject actionEntity21 new JSONObject();actionEntity21.put(action, add);actionEntity21.put(describe, 新增);actionEntity21.put(defaultCheck, false);actionEntitySet2.add(actionEntity21);JSONObject actionEntity22 new JSONObject();actionEntity22.put(action, query);actionEntity22.put(describe, 查询);actionEntity22.put(defaultCheck, false);actionEntitySet2.add(actionEntity22);JSONObject actionEntity23 new JSONObject();actionEntity23.put(action, get);actionEntity23.put(describe, 详情);actionEntity23.put(defaultCheck, false);actionEntitySet2.add(actionEntity23);JSONObject actionEntity24 new JSONObject();actionEntity24.put(action, update);actionEntity24.put(describe, 修改);actionEntity24.put(defaultCheck, false);actionEntitySet2.add(actionEntity24);JSONObject actionEntity25 new JSONObject();actionEntity25.put(action, delete);actionEntity25.put(describe, 删除);actionEntity25.put(defaultCheck, false);actionEntitySet2.add(actionEntity25);permission2.put(actionEntitySet, actionEntitySet2);permission2.put(actionList, null);permission2.put(dataAccess, null);permissionArray.add(permission2);roleObj.put(permissions, permissionArray);userInfoJson.put(role, roleObj);JSONObject body new JSONObject();body.put(result, userInfoJson);return body;}RequestMapping(/nav)ResponseBodypublic JSONObject getUserMenus(){ListMenuVo dataArray new ArrayList();MenuVo menu1 new MenuVo();menu1.setId(1);menu1.setParentId(0);menu1.setName(dashboard);menu1.setComponent(RouteView);menu1.setRedirect(/dashboard/workplace);MenuMetaVo meta1 new MenuMetaVo();meta1.setTitle(menu.dashboard);meta1.setIcon(dashboard);meta1.setShow(true);menu1.setMeta(meta1);dataArray.add(menu1);MenuVo menu2 new MenuVo();menu2.setId(7);menu2.setParentId(1);menu2.setName(workplace);menu2.setComponent(Workplace);MenuMetaVo meta2 new MenuMetaVo();meta2.setTitle(menu.dashboard.monitor);meta2.setShow(true);menu2.setMeta(meta2);dataArray.add(menu2);MenuVo menu3 new MenuVo();menu3.setId(3);menu3.setParentId(1);menu3.setName(monitor);menu3.setPath(https://www.baidu.com/);MenuMetaVo meta3 new MenuMetaVo();meta3.setTitle(menu.dashboard.workplace);meta3.setTarget(_blank);meta3.setShow(true);menu3.setMeta(meta3);dataArray.add(menu3);MenuVo menu4 new MenuVo();menu4.setId(2);menu4.setParentId(1);menu4.setName(Analysis);menu4.setComponent(Analysis);menu4.setPath(/dashboard/analysis);MenuMetaVo meta4 new MenuMetaVo();meta4.setTitle(menu.dashboard.analysis);meta4.setShow(true);menu4.setMeta(meta4);dataArray.add(menu4);// FormMenuVo menu5 new MenuVo();menu5.setId(10);menu5.setParentId(0);menu5.setName(form);menu5.setComponent(RouteView);menu5.setRedirect(/form/base-form);MenuMetaVo meta5 new MenuMetaVo();meta5.setTitle(menu.form);meta5.setIcon(form);menu5.setMeta(meta5);dataArray.add(menu5);MenuVo menu6 new MenuVo();menu6.setId(6);menu6.setParentId(10);menu6.setName(basic-form);menu6.setComponent(BasicForm);MenuMetaVo meta6 new MenuMetaVo();meta6.setTitle(menu.form.basic-form);menu6.setMeta(meta6);dataArray.add(menu6);MenuVo menu7 new MenuVo();menu7.setId(5);menu7.setParentId(10);menu7.setName(step-form);menu7.setComponent(StepForm);MenuMetaVo meta7 new MenuMetaVo();meta7.setTitle(menu.form.step-form);menu7.setMeta(meta7);dataArray.add(menu7);MenuVo menu8 new MenuVo();menu8.setId(4);menu8.setParentId(10);menu8.setName(advanced-form);menu8.setComponent(AdvanceForm);MenuMetaVo meta8 new MenuMetaVo();meta8.setTitle(menu.form.advanced-form);menu8.setMeta(meta8);dataArray.add(menu8);// ListMenuVo menu9 new MenuVo();menu9.setId(10010);menu9.setParentId(0);menu9.setName(list);menu9.setComponent(RouteView);menu9.setRedirect(/list/table-list);MenuMetaVo meta9 new MenuMetaVo();meta9.setTitle(menu.list);meta9.setIcon(table);meta9.setShow(true);menu9.setMeta(meta9);dataArray.add(menu9);MenuVo menu10 new MenuVo();menu10.setId(10011);menu10.setParentId(10010);menu10.setName(table-list);menu10.setComponent(TableList);menu10.setPath(/list/table-list/:pageNo([1-9]\\d*)?);MenuMetaVo meta10 new MenuMetaVo();meta10.setTitle(menu.list.table-list);meta10.setShow(true);menu10.setMeta(meta10);dataArray.add(menu10);MenuVo menu11 new MenuVo();menu11.setId(10012);menu11.setParentId(10010);menu11.setName(basic-list);menu11.setComponent(StandardList);MenuMetaVo meta11 new MenuMetaVo();meta11.setTitle(menu.list.basic-list);meta11.setShow(true);menu11.setMeta(meta11);dataArray.add(menu11);JSONObject body new JSONObject();body.put(result, dataArray);return body;} }7.创建Account/api/account接口响应处理类 package cn.chinaelink.im.mcvboot.controller.api;import lombok.extern.slf4j.Slf4j; import net.sf.json.JSONObject; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*;import java.util.Random;Controller Slf4j RequestMapping(/api/account) public class AccountController {RequestMapping(/sms)ResponseBodypublic String smsCaptcha() {Random random new Random();int num random.nextInt(89999) 10000;JSONObject data new JSONObject();data.put(captcha, num);JSONObject response new JSONObject();response.put(result, data);return response.toString();} }四、验证 1.启动服务端 启动成功后可以通过浏览器访问http://127.0.0.1:8080/ 2.启动前端 在命令行进入前端代码所在目录后执行下面的命令 D:\work\JavaTeam\workspace\IdeaProjects\antDesignPro\antdvPromc yarn run serve3.访问前端画面 说明 通过访问前端已正常通过http://192.168.0.100:8080这个后端服务接口登录认证成功并成功的获取到后台返回的菜单只返回了两项一级菜单
http://www.dnsts.com.cn/news/31569.html

相关文章:

  • 做网站 公司有哪些有哪些做废品的网站
  • 东莞网站seo优化机械加工网论坛
  • 网站繁简通软件工程师需要什么学历
  • e网站建设做映射后 内网无法通过域名访问网站
  • 移动开发网站开发区别网页设计代码大全表单
  • 中英文网站是怎么做的华为手机网站建设策划方案
  • 有做学历在网站能查的到的晋城有做网站的吗
  • gif表情包在线制作seo建站优化推广
  • 做门户网站用什么系统thesis wordpress
  • 兰州有制作网站wordpress 菜单 插件
  • 动态ip上做网站制作网页一般需要兼容哪些网站
  • 如何申请深圳设计公司网站网站没有流量怎么办
  • 网站建设多选题广州深圳外贸公司
  • 哈尔滨网站设计人wordpress自带主题下载
  • 有什么做家常菜的网站制作英文网站
  • 免费电子商务网站源码安防网站模板
  • 网站建设 统一质量标准嵌入式培训
  • 青岛建设交易中心网站首页自动生成logo的网站
  • 贵阳网站制作 建设广州专业网站建设价格
  • 无锡网站建设培训广州市企业网站建设企业
  • 邻水建设局网站wordpress积分商城
  • 哪个网站可下载免费ppt建设银行新乡分行城南支行网站
  • 湖南湘潭网站建设linux 如何做网站
  • 设计网站公司咨询亿企邦网页制作考证视频
  • 网站做优化是什么意思盘锦门户网站制作
  • 在线解压rar网站wordpress 调用文章内容
  • 搭建网站空间东莞做网站软件
  • 张家界简单的网站建设濮阳到上海
  • 如何查询某个网站的设计公司长沙传统网络营销介绍
  • 如何查询网站建站时间牡丹江哪个网络好