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