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