From 895dedb7341da20fb815010630a99988005b81a1 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Wed, 13 May 2020 16:49:48 +0800
Subject: [PATCH] add userauth

---
 src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java                 |    5 ++
 src/main/java/com/xcong/excoin/configurations/security/UserAuthenticationArgumentResolver.java |   39 +++++++++++++++++++
 src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java                                |    7 +++
 src/main/java/com/xcong/excoin/common/system/dto/LoginDto.java                                 |    8 +++-
 src/main/java/com/xcong/excoin/common/system/controller/LoginController.java                   |    2 +
 src/main/java/com/xcong/excoin/common/annotations/UserAuth.java                                |    1 
 6 files changed, 58 insertions(+), 4 deletions(-)

diff --git a/src/main/java/com/xcong/excoin/common/annotations/UserAuth.java b/src/main/java/com/xcong/excoin/common/annotations/UserAuth.java
index cf1f12a..597a6e9 100644
--- a/src/main/java/com/xcong/excoin/common/annotations/UserAuth.java
+++ b/src/main/java/com/xcong/excoin/common/annotations/UserAuth.java
@@ -6,6 +6,7 @@
 /**
  * 自动注入当前登录用户
  *
+ * @author wzy
  */
 @Target({ ElementType.PARAMETER, ElementType.TYPE })
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
index 28feccb..7d601a7 100644
--- a/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
+++ b/src/main/java/com/xcong/excoin/common/system/controller/LoginController.java
@@ -7,6 +7,7 @@
 import com.xcong.excoin.common.system.bean.LoginUserBean;
 import com.xcong.excoin.common.system.dto.LoginDto;
 import com.xcong.excoin.utils.RedisUtils;
+import io.swagger.annotations.Api;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
@@ -26,6 +27,7 @@
  * @Version V1.0
  **/
 @Slf4j
+@Api(value = "登陆类", tags = "登陆类")
 @RestController
 @RequestMapping(value = "/")
 public class LoginController {
diff --git a/src/main/java/com/xcong/excoin/common/system/dto/LoginDto.java b/src/main/java/com/xcong/excoin/common/system/dto/LoginDto.java
index bc7ec00..af17f24 100644
--- a/src/main/java/com/xcong/excoin/common/system/dto/LoginDto.java
+++ b/src/main/java/com/xcong/excoin/common/system/dto/LoginDto.java
@@ -1,5 +1,7 @@
 package com.xcong.excoin.common.system.dto;
 
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
 import javax.validation.constraints.NotBlank;
@@ -9,13 +11,15 @@
  * @date 2020-05-12
  **/
 @Data
+@ApiModel(value = "登陆接口接收类", description = "登陆接口接收类")
 public class LoginDto {
 
+
+    @ApiModelProperty(value = "用户名", example = "123")
     @NotBlank(message = "用户名或密码错误")
     private String username;
 
+    @ApiModelProperty(value = "密码", example = "3333")
     @NotBlank(message = "用户名或密码错误")
     private String password;
-
-    private String code;
 }
diff --git a/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java b/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java
index c31c084..cc8e77b 100644
--- a/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java
+++ b/src/main/java/com/xcong/excoin/configurations/WebMvcConfig.java
@@ -1,12 +1,16 @@
 package com.xcong.excoin.configurations;
 
+import com.xcong.excoin.configurations.security.UserAuthenticationArgumentResolver;
 import com.xcong.excoin.utils.SpringContextHolder;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.boot.SpringBootConfiguration;
 import org.springframework.context.annotation.Bean;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
 import org.springframework.web.servlet.config.annotation.CorsRegistry;
 import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import java.util.List;
 
 /**
  * @author wzy
@@ -17,7 +21,8 @@
 public class WebMvcConfig implements WebMvcConfigurer {
 
     @Override
-    public void addInterceptors(InterceptorRegistry registry) {
+    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
+        resolvers.add(new UserAuthenticationArgumentResolver());
     }
 
     /**
diff --git a/src/main/java/com/xcong/excoin/configurations/security/UserAuthenticationArgumentResolver.java b/src/main/java/com/xcong/excoin/configurations/security/UserAuthenticationArgumentResolver.java
new file mode 100644
index 0000000..5dee717
--- /dev/null
+++ b/src/main/java/com/xcong/excoin/configurations/security/UserAuthenticationArgumentResolver.java
@@ -0,0 +1,39 @@
+package com.xcong.excoin.configurations.security;
+
+import com.xcong.excoin.common.annotations.UserAuth;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
+import org.springframework.core.MethodParameter;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.web.bind.support.WebDataBinderFactory;
+import org.springframework.web.context.request.NativeWebRequest;
+import org.springframework.web.method.support.HandlerMethodArgumentResolver;
+import org.springframework.web.method.support.ModelAndViewContainer;
+
+/**
+ * 自动注入登陆用户
+ *
+ * @author wzy
+ * @date 2020-05-13
+ **/
+public class UserAuthenticationArgumentResolver implements HandlerMethodArgumentResolver {
+
+    @Override
+    public boolean supportsParameter(MethodParameter parameter) {
+        return parameter.getParameterAnnotation(UserAuth.class) != null && parameter.getParameterType().equals(MemberEntity.class);
+    }
+
+    @Override
+    public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer, NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        if (authentication == null) {
+            return null;
+        }
+
+        MemberEntity auth = null;
+        if (authentication.getPrincipal() != null) {
+            auth = (MemberEntity) authentication.getPrincipal();
+        }
+        return auth;
+    }
+}
diff --git a/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java b/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java
index 430f8e6..1806240 100644
--- a/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java
+++ b/src/main/java/com/xcong/excoin/modules/test/controller/TestUserController.java
@@ -2,7 +2,9 @@
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.xcong.excoin.common.annotations.UserAuth;
 import com.xcong.excoin.common.response.Result;
+import com.xcong.excoin.modules.member.entity.MemberEntity;
 import com.xcong.excoin.modules.test.dto.TestUserDto;
 import com.xcong.excoin.modules.test.entity.TestUserEntity;
 import com.xcong.excoin.modules.test.mapper.TestUserEntityMapper;
@@ -38,8 +40,9 @@
     @PostMapping(value = "/findUserInPage")
     public Result findUserInPage(@RequestParam(value = "pageSize", defaultValue = "10") int pageSize,
                                  @RequestParam(value = "pageNum", defaultValue = "1") int pageNum,
-                                 @RequestBody @Valid TestUserDto testUserDto) {
+                                 @RequestBody @Valid TestUserDto testUserDto, @UserAuth MemberEntity memberEntity) {
         log.info("--->{}",SecurityContextHolder.getContext().getAuthentication());
+        log.info("----->{}", memberEntity);
         Page<TestUserEntity> page = new Page<>(pageNum, pageSize);
         log.info(testUserDto.getName());
         IPage<TestUserEntity> list = testUserService.page(page);

--
Gitblit v1.9.1