diff --git a/ant-design-vue-jeecg/src/assets/checkcode.png b/ant-design-vue-jeecg/src/assets/checkcode.png new file mode 100644 index 0000000..ed86ad1 --- /dev/null +++ b/ant-design-vue-jeecg/src/assets/checkcode.png diff --git a/ant-design-vue-jeecg/src/views/user/Login.vue b/ant-design-vue-jeecg/src/views/user/Login.vue index 2f70744..d6ece74 100644 --- a/ant-design-vue-jeecg/src/views/user/Login.vue +++ b/ant-design-vue-jeecg/src/views/user/Login.vue @@ -9,16 +9,16 @@ <a-form-item> <a-input size="large" - v-decorator="['username',{initialValue:'admin', rules: validatorRules.username.rules}]" + v-decorator="['username',validatorRules.username,{ validator: this.handleUsernameOrEmail }]" type="text" - placeholder="请输入帐户名 / jeecg"> + placeholder="请输入帐户名 / admin"> <a-icon slot="prefix" type="user" :style="{ color: 'rgba(0,0,0,.25)' }"/> </a-input> </a-form-item> <a-form-item> <a-input - v-decorator="['password',{initialValue:'123456', rules: validatorRules.password.rules}]" + v-decorator="['password',validatorRules.password]" size="large" type="password" autocomplete="false" @@ -41,7 +41,8 @@ </a-form-item> </a-col> <a-col :span="8" style="text-align: right"> - <img style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/> + <img v-if="requestCodeSuccess" style="margin-top: 2px;" :src="randCodeImage" @click="handleChangeCheckCode"/> + <img v-else style="margin-top: 2px;" src="../../assets/checkcode.png" @click="handleChangeCheckCode"/> <!--<j-graphic-code @success="generateCode" ref="jgraphicCodeRef" style="float: right" remote></j-graphic-code>--> </a-col> </a-row> @@ -217,7 +218,8 @@ currentUsername:"", validate_status:"", currdatetime:'', - randCodeImage:'' + randCodeImage:'', + requestCodeSuccess:false } }, created () { @@ -346,9 +348,13 @@ getAction(`/sys/randomImage/${this.currdatetime}`).then(res=>{ if(res.success){ this.randCodeImage = res.result + this.requestCodeSuccess=true }else{ this.$message.error(res.message) + this.requestCodeSuccess=false } + }).catch(()=>{ + this.requestCodeSuccess=false }) }, loginSuccess () { diff --git a/ant-design-vue-jeecg/vue.config.js b/ant-design-vue-jeecg/vue.config.js index 9782dcf..fcabbe2 100644 --- a/ant-design-vue-jeecg/vue.config.js +++ b/ant-design-vue-jeecg/vue.config.js @@ -30,6 +30,14 @@ module.exports = { .set('@comp', resolve('src/components')) .set('@views', resolve('src/views')) .set('@layout', resolve('src/layout')) + + // 配置 webpack 识别 markdown 为普通的文件 + config.module + .rule('markdown') + .test(/\.md$/) + .use() + .loader('file-loader') + .end() }, css: { diff --git a/jeecg-boot/db/2jeecgboot_mysql5.7.sql b/jeecg-boot/db/2jeecgboot_mysql5.7.sql index 00733e8..09e725f 100644 --- a/jeecg-boot/db/2jeecgboot_mysql5.7.sql +++ b/jeecg-boot/db/2jeecgboot_mysql5.7.sql @@ -1,4 +1,3 @@ -USE jeecg-boot; /* Navicat Premium Data Transfer diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml index 5cb79e3..5cf617b 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/mapper/xml/SysPermissionMapper.xml @@ -44,15 +44,18 @@ SELECT * FROM ( SELECT p.* FROM sys_permission p - WHERE exists( - select a.id from sys_role_permission a - join sys_role b on a.role_id = b.id - join sys_user_role c on c.role_id = b.id - join sys_user d on d.id = c.user_id - where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR} - ) + WHERE (exists( + select a.id from sys_role_permission a + join sys_role b on a.role_id = b.id + join sys_user_role c on c.role_id = b.id + join sys_user d on d.id = c.user_id + where p.id = a.permission_id AND d.username = #{username,jdbcType=VARCHAR} + ) + <!--update begin Author:taoyan Date:20200225 for:默认授权online的auto动态隐藏路由 --> + or (p.url like '%:code' and p.url like '/online%' and p.hidden = 1) ) + <!--update end Author:taoyan Date:20200213 for:默认授权online的auto动态隐藏路由 --> and p.del_flag = 0 - <!--update begin Author:lvdandan Date:20200213 for:加入部门权限 --> + <!--update begin Author:lvdandan Date:20200225 for:加入部门权限 --> UNION SELECT p.* FROM sys_permission p diff --git a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java index e110362..4697821 100644 --- a/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java +++ b/jeecg-boot/jeecg-boot-module-system/src/main/java/org/jeecg/modules/system/util/RandImageUtil.java @@ -1,15 +1,17 @@ package org.jeecg.modules.system.util; -import sun.misc.BASE64Encoder; - import javax.imageio.ImageIO; import javax.servlet.http.HttpServletResponse; import java.awt.*; import java.awt.image.BufferedImage; import java.io.ByteArrayOutputStream; import java.io.IOException; +import java.util.Base64; import java.util.Random; +/** + * 登录验证码工具类 + */ public class RandImageUtil { public static final String key = "JEECG_LOGIN_KEY"; @@ -69,9 +71,8 @@ public class RandImageUtil { ImageIO.write(image, IMG_FORMAT, byteStream); //转换成字节 byte[] bytes = byteStream.toByteArray(); - BASE64Encoder encoder = new BASE64Encoder(); //转换成base64串 - String base64 = encoder.encodeBuffer(bytes).trim(); + String base64 = Base64.getEncoder().encodeToString(bytes).trim(); base64 = base64.replaceAll("\n", "").replaceAll("\r", "");//删除 \r\n //写到指定位置