From 39de91481b6e9f2e7bca5c09396edbc9b41a6afc Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Fri, 27 May 2022 11:12:49 +0800
Subject: [PATCH] 20220527

---
 src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java       |    1 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java   |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java           |   12 +++
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java   |    2 
 src/test/java/com/xcong/farmer/cms/RSATest.java                                         |    6 
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java     |    8 +-
 src/main/java/com/xcong/farmer/cms/modules/system/mapper/UserMapper.java                |    1 
 src/main/java/com/xcong/farmer/cms/configurations/properties/SecurityProperties.java    |    2 
 src/main/resources/mapper/UserMapper.xml                                                |    4 +
 src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java                |   14 +++
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java   |    2 
 src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java |   55 +++++++++++++
 src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java                |    4 +
 src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java   |   76 +++++++++++++++++++
 src/main/resources/application.yml                                                      |    1 
 16 files changed, 182 insertions(+), 10 deletions(-)

diff --git a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
index abee2dc..a9a2ca4 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/properties/ApplicationProperties.java
@@ -14,5 +14,7 @@
 @Configuration
 @ConfigurationProperties(prefix = "app")
 public class ApplicationProperties {
+
     private boolean debug;
+
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/properties/SecurityProperties.java b/src/main/java/com/xcong/farmer/cms/configurations/properties/SecurityProperties.java
index e89fb41..bb3e323 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/properties/SecurityProperties.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/properties/SecurityProperties.java
@@ -14,4 +14,6 @@
 public class SecurityProperties {
 
     private String privateKey;
+
+    private String publicKey;
 }
diff --git a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
index 7012aae..0fe9e94 100644
--- a/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
+++ b/src/main/java/com/xcong/farmer/cms/configurations/security/WebSecurityConfig.java
@@ -42,6 +42,7 @@
                 .antMatchers("/swagger**/**").permitAll()
                 .antMatchers("/webjars/**").permitAll()
                 .antMatchers("/v2/**").permitAll()
+                .antMatchers("/api/common/**").permitAll()
                 .anyRequest().authenticated()
                 .and().apply(securityConfiguereAdapter());
     }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
new file mode 100644
index 0000000..edccb6c
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminCommonController.java
@@ -0,0 +1,55 @@
+package com.xcong.farmer.cms.modules.system.Controller;
+
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.crypto.SecureUtil;
+import com.alibaba.fastjson.JSONObject;
+import com.xcong.farmer.cms.common.contants.AppContants;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.common.system.bean.LoginUserBean;
+import com.xcong.farmer.cms.common.system.dto.LoginDto;
+import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
+import com.xcong.farmer.cms.modules.system.service.ICommonService;
+import com.xcong.farmer.cms.modules.system.service.IUserService;
+import com.xcong.farmer.cms.utils.RedisUtils;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.validation.annotation.Validated;
+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.RestController;
+
+import javax.annotation.Resource;
+import javax.servlet.http.HttpServletRequest;
+import java.util.HashMap;
+import java.util.Map;
+
+@RestController
+@RequestMapping(value = "/api/common")
+@Slf4j
+@Api(value = "登录", tags = "登录")
+public class AdminCommonController {
+
+    @Resource
+    private ICommonService iCommonService;
+
+    @ApiOperation(value = "登陆接口", notes = "登陆接口")
+    @PostMapping("/login")
+    public Result login(@RequestBody AdminLoginDto adminLoginDto) {
+
+        String username = adminLoginDto.getUsername();
+        if(StrUtil.isEmpty(username)){
+            return Result.fail("请输入用户名");
+        }
+        String password = adminLoginDto.getPassword();
+        if(StrUtil.isEmpty(password)){
+            return Result.fail("请输入密码");
+        }
+        return iCommonService.login(adminLoginDto);
+    }
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
index 5deebfa..d868849 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminMenuController.java
@@ -18,7 +18,7 @@
 import javax.validation.Valid;
 
 @RestController
-@RequestMapping(value = "/menu")
+@RequestMapping(value = "/api/menu")
 @Slf4j
 @Api(value = "系统菜单", tags = "系统菜单")
 public class AdminMenuController {
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
index 44a5fae..81a54a4 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminRoleController.java
@@ -18,7 +18,7 @@
 import javax.validation.Valid;
 
 @RestController
-@RequestMapping(value = "/role")
+@RequestMapping(value = "/api/role")
 @Slf4j
 @Api(value = "系统角色", tags = "系统角色")
 public class AdminRoleController {
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
index 2b04b81..4af43fd 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/Controller/AdminUserController.java
@@ -21,7 +21,7 @@
 import javax.validation.Valid;
 
 @RestController
-@RequestMapping(value = "/user")
+@RequestMapping(value = "/api/user")
 @Slf4j
 @Api(value = "系统用户", tags = "系统用户")
 public class AdminUserController {
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java
new file mode 100644
index 0000000..901359f
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/dto/AdminLoginDto.java
@@ -0,0 +1,14 @@
+package com.xcong.farmer.cms.modules.system.dto;
+
+import io.swagger.annotations.ApiModel;
+import lombok.Data;
+
+@Data
+@ApiModel(value = "AdminLoginDto", description = "参数接收类")
+public class AdminLoginDto {
+
+    private String username;
+
+    private String password;
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java b/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
index 638af70..0b3958b 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/entity/UserEntity.java
@@ -11,6 +11,10 @@
 @TableName("t_user")
 public class UserEntity extends BaseEntity {
     /**
+     * 默认账户
+     */
+    public static final String USERNAME_DEFAULT = "system";
+    /**
      * 默认密码
      */
     public static final String PASSWORD_DEFAULT = "123456";
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/UserMapper.java b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/UserMapper.java
index bf49c1d..202a9ff 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/mapper/UserMapper.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/mapper/UserMapper.java
@@ -11,4 +11,5 @@
 
     IPage<AdminUserVo> selectAdminUserVoInPage(Page<AdminUserVo> page, @Param("record") UserEntity userEntity);
 
+    UserEntity selectByUserNameAndPassword(@Param("username")String username, @Param("password")String md5Password);
 }
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
new file mode 100644
index 0000000..5eb9be0
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/ICommonService.java
@@ -0,0 +1,12 @@
+package com.xcong.farmer.cms.modules.system.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+
+public interface ICommonService  extends IService<UserEntity> {
+
+    Result login(AdminLoginDto adminLoginDto);
+
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
new file mode 100644
index 0000000..6b165e1
--- /dev/null
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/CommonServiceImpl.java
@@ -0,0 +1,76 @@
+package com.xcong.farmer.cms.modules.system.service.Impl;
+
+import cn.hutool.crypto.SecureUtil;
+import cn.hutool.crypto.asymmetric.KeyType;
+import com.alibaba.fastjson.JSONObject;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.xcong.farmer.cms.common.contants.AppContants;
+import com.xcong.farmer.cms.common.response.Result;
+import com.xcong.farmer.cms.configurations.properties.ApplicationProperties;
+import com.xcong.farmer.cms.configurations.properties.SecurityProperties;
+import com.xcong.farmer.cms.modules.system.dto.AdminLoginDto;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
+import com.xcong.farmer.cms.modules.system.mapper.UserMapper;
+import com.xcong.farmer.cms.modules.system.service.ICommonService;
+import com.xcong.farmer.cms.utils.RedisUtils;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import java.util.HashMap;
+import java.util.Map;
+
+import javax.annotation.Resource;
+import cn.hutool.core.util.StrUtil;
+import cn.hutool.core.util.IdUtil;
+import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.crypto.asymmetric.RSA;
+
+@Service
+@Slf4j
+public class CommonServiceImpl extends ServiceImpl<UserMapper, UserEntity> implements ICommonService {
+
+    @Resource
+    private UserMapper userMapper;
+    @Resource
+    private RedisUtils redisUtils;
+    @Resource
+    private ApplicationProperties applicationProperties;
+    @Resource
+    private SecurityProperties securityProperties;
+
+    @Override
+    public Result login(AdminLoginDto adminLoginDto) {
+        String username = adminLoginDto.getUsername();
+        String password = adminLoginDto.getPassword();
+        UserEntity userEntity = userMapper.selectByUserNameAndPassword(username, SecureUtil.md5(password));
+        if(ObjectUtil.isEmpty(userEntity)){
+            return Result.fail("请输入正确的账号和密码");
+        }
+        //生成UUID作为token
+        String token = IdUtil.simpleUUID();
+        String redisToken = AppContants.APP_LOGIN_PREFIX + token;
+        String redisMember = AppContants.APP_LOGIN_PREFIX + userEntity.getId();
+
+        if (StrUtil.isNotBlank(redisUtils.getString(redisMember))) {
+            redisUtils.del(AppContants.APP_LOGIN_PREFIX + redisUtils.getString(redisMember));
+        }
+        redisUtils.set(redisToken, JSONObject.toJSONString(userEntity), 3000L);
+        redisUtils.set(redisMember, token);
+
+        Map<String, Object> authInfo = new HashMap<>();
+        // 开启debug模式,则将加密后的token返回
+        if (applicationProperties.isDebug()) {
+            authInfo.put("token", token);
+            authInfo.put("rsaToken", AppContants.TOKEN_START_WITH + generateAsaToken(token));
+            authInfo.put("user", userEntity);
+        } else {
+            authInfo.put("token", token);
+            authInfo.put("user", userEntity);
+        }
+        return Result.ok("登录成功", authInfo);
+    }
+
+    public String generateAsaToken(String token) {
+        RSA rsa = new RSA(null, securityProperties.getPublicKey());
+        return rsa.encryptBase64(token + "_" + System.currentTimeMillis(), KeyType.PublicKey);
+    }
+}
diff --git a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
index 66dd7c0..7b15c11 100644
--- a/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
+++ b/src/main/java/com/xcong/farmer/cms/modules/system/service/Impl/UserServiceImpl.java
@@ -1,5 +1,6 @@
 package com.xcong.farmer.cms.modules.system.service.Impl;
 
+import cn.hutool.crypto.SecureUtil;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -18,7 +19,6 @@
 import org.springframework.stereotype.Service;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.codec.Rot;
 import org.springframework.transaction.annotation.Transactional;
 
 import javax.annotation.Resource;
@@ -71,8 +71,8 @@
         if(StrUtil.isNotEmpty(adminAddUserDto.getEmail())){
             userEntity.setEmail(adminAddUserDto.getEmail());
         }
-        ;
-        userEntity.setPassword(Rot.encode13(UserEntity.PASSWORD_DEFAULT));
+
+        userEntity.setPassword(SecureUtil.md5(UserEntity.PASSWORD_DEFAULT));
         userEntity.setStatus(UserEntity.STATUS_ENABLE);
         int insert = this.baseMapper.insert(userEntity);
         if(insert > 0){
@@ -180,7 +180,7 @@
         if(ObjectUtil.isEmpty(userEntity)){
             return Result.fail("用户不存在");
         }
-        userEntity.setPassword(Rot.encode13(UserEntity.PASSWORD_DEFAULT));
+        userEntity.setPassword(SecureUtil.md5(UserEntity.PASSWORD_DEFAULT));
         this.baseMapper.updateById(userEntity);
         return Result.ok("重置成功");
     }
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 0086006..255857b 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -77,4 +77,5 @@
   debug: true
 
 rsa:
+  public_key: MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCCf8UFZK54AiK4PRu7tNd+Z8qZ77o/QXCnk25DRmygVpOEu5mGNSAvfnWmKp2pEV2RljeXq3Rid/+LQkonaebMJeXKSF0yxL/VgyeT8JaQ5gNbOrdfdlc+mFkXJyzyJt8YkvApEdPRNSU2ENBn7mgRfD0BYPM4vZ6/rv+de38FJwIDAQAB
   private_key: MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAIJ/xQVkrngCIrg9G7u0135nypnvuj9BcKeTbkNGbKBWk4S7mYY1IC9+daYqnakRXZGWN5erdGJ3/4tCSidp5swl5cpIXTLEv9WDJ5PwlpDmA1s6t192Vz6YWRcnLPIm3xiS8CkR09E1JTYQ0GfuaBF8PQFg8zi9nr+u/517fwUnAgMBAAECgYBhPt9NvpI4wbanvnndLczr2GJkxfzvSE+vwLCJF4C5FusFHVsxZINggQcg1V75bwRgCiXRMyYefreCSdrCditS43PzTOmE4RRrpxLlm8oubJc0C98LQ2qlN9AsUqL5IHpVGgbHDyWAwjc1GBID6nwXKpxq1/VodFqhahG9D5EZsQJBALnkb+5VTxQbiyQI4Uc9NIvAyVcNY1OisbvY6tvNgdBbJkADgAb78M1HWxxYjUqsvzggNHc7cWqWBHMgpnJaqm8CQQCztze4D7uAk7OC9MJHY5eE980J8Kk+GEZKxz4LahzU6V6dcb9GFac3wEtgilj/tOAn9y0/Q8sm9vvCIbMDzgzJAkEAqRYcqhF26LdVDOX25DHMBgLKISDQZFbsjA13M4/usHL4i+mjHrc0BcUOHu59NpuDI65HitzLAUSLr5zXSdUmiQJAW77wOg4GCejdXsB3IhzMsHwU97sdm26nC+vVV9xvJZ6Rx8zW+f9543NOx9U5BCmhuaVtOvvwDU9PTVcI3atmSQJAXAIJ5gGdtXx0DXiX4VvzNFHqgaqHMGvXyjNVkU2FYQbSAd2A6app4uRO+BkZu9dSjh14m+oXMnV2HzAN2rRnjA==
diff --git a/src/main/resources/mapper/UserMapper.xml b/src/main/resources/mapper/UserMapper.xml
index d417a2a..1545105 100644
--- a/src/main/resources/mapper/UserMapper.xml
+++ b/src/main/resources/mapper/UserMapper.xml
@@ -17,4 +17,8 @@
         order by a.create_time desc
     </select>
 
+    <select id="selectByUserNameAndPassword" resultType="com.xcong.farmer.cms.modules.system.entity.UserEntity">
+        SELECT a.* FROM t_user a where a.username = #{username} and a.password = #{password}
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/src/test/java/com/xcong/farmer/cms/RSATest.java b/src/test/java/com/xcong/farmer/cms/RSATest.java
index 6f38abe..69d2fc1 100644
--- a/src/test/java/com/xcong/farmer/cms/RSATest.java
+++ b/src/test/java/com/xcong/farmer/cms/RSATest.java
@@ -7,6 +7,7 @@
 import cn.hutool.crypto.SecureUtil;
 import cn.hutool.crypto.asymmetric.KeyType;
 import cn.hutool.crypto.asymmetric.RSA;
+import com.xcong.farmer.cms.modules.system.entity.UserEntity;
 import lombok.extern.slf4j.Slf4j;
 import org.junit.jupiter.api.Test;
 import org.springframework.boot.test.context.SpringBootTest;
@@ -28,9 +29,8 @@
 
     @Test
     public void rsaTest() {
-        KeyPair keyPair = SecureUtil.generateKeyPair("RSA");
-        log.info("{}", Base64.encode(keyPair.getPublic().getEncoded()));
-        log.info("{}", Base64.encode(keyPair.getPrivate().getEncoded()));
+        String s = SecureUtil.md5(UserEntity.PASSWORD_DEFAULT);
+        System.out.println(s);
     }
 
 

--
Gitblit v1.9.1