From a92198a8368043828e61b239031f87d549a7706b Mon Sep 17 00:00:00 2001 From: Nick <1528282042@qq.com> Date: Tue, 7 Apr 2020 16:11:59 +0800 Subject: [PATCH] =?UTF-8?q?=E7=90=86=E6=B8=85=E4=BA=86SpringSecurity?= =?UTF-8?q?=E7=9A=84=E6=89=A7=E8=A1=8C=E8=BF=87=E7=A8=8B,=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=94=9F=E6=88=90Entity=E8=BD=ACDto=E7=9A=84@Mappper?= =?UTF-8?q?=E6=B3=A8=E8=A7=A3=E7=9A=84=E4=BD=9C=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/java/me/zhengjie/aspect/LogAspect.java | 2 +- .../modules/security/config/SecurityProperties.java | 5 +++++ .../modules/security/rest/AuthController.java | 6 ++++++ .../modules/security/security/TokenConfigurer.java | 1 + .../modules/security/security/TokenFilter.java | 13 +++++++++++++ .../modules/security/security/TokenProvider.java | 10 +++++++++- .../modules/system/service/mapper/MenuMapper.java | 6 ++++++ .../src/main/resources/config/application-dev.yml | 2 +- 8 files changed, 42 insertions(+), 3 deletions(-) diff --git a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java index 78fa2e33..a90aae2c 100644 --- a/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java +++ b/eladmin-logging/src/main/java/me/zhengjie/aspect/LogAspect.java @@ -45,7 +45,7 @@ public class LogAspect { /** * 配置环绕通知,使用在方法logPointcut()上注册的切入点 - * + * 也可以使用@Around("@annotation(me.zhengjie.aop.log.Log)") * @param joinPoint join point for advice */ @Around("logPointcut()") diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java index 65aaca18..c59f98d4 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/config/SecurityProperties.java @@ -4,11 +4,16 @@ import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; + +import javax.persistence.Entity; /** * Jwt参数配置 * @author Zheng Jie * @date 2019年11月28日 + * ConfigurationProperties可以将外部配置文件(比如applicaition.properties)加载进来,填充对象的对应字段的数据,然后供其他Bean使用 + * Configuration配置类注解,被自动扫描发现,不然这个类无法被Spring容器管理,会导致ConfigurationProperties失效 */ @Data @Configuration diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java index b7c80d1a..5822720e 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/rest/AuthController.java @@ -94,10 +94,16 @@ public class AuthController { if (StringUtils.isBlank(authUser.getCode()) || !authUser.getCode().equalsIgnoreCase(code)) { throw new BadRequestException("验证码错误"); } + /** + * 这是一个Authentication对象;,principal存储用户名,credentials存储密码, + * 然后将authenticationToken对象提交到SpringSecurity去验证authenticate(authenticationToken) + * 可通过boolean isAuthenticated()方法来决定该Authentication是否认证成功 + */ UsernamePasswordAuthenticationToken authenticationToken = new UsernamePasswordAuthenticationToken(authUser.getUsername(), password); /** * 通过token获得授权对象 + * */ Authentication authentication = authenticationManagerBuilder.getObject().authenticate(authenticationToken); SecurityContextHolder.getContext().setAuthentication(authentication); diff --git a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java index 1784e544..6b00aa0a 100644 --- a/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java +++ b/eladmin-system/src/main/java/me/zhengjie/modules/security/security/TokenConfigurer.java @@ -21,6 +21,7 @@ public class TokenConfigurer extends SecurityConfigurerAdapter ERROR : 任何未映射的目标属性都将导致映射代码生成失败 + * 2> WARN : 任何未映射的目标属性将在构建时引发警告 + * 3> IGNORE : 未映射的目标属性被忽略 */ @Mapper(componentModel = "spring",unmappedTargetPolicy = ReportingPolicy.IGNORE) public interface MenuMapper extends BaseMapper { diff --git a/eladmin-system/src/main/resources/config/application-dev.yml b/eladmin-system/src/main/resources/config/application-dev.yml index 075d9f5c..38e5aae3 100644 --- a/eladmin-system/src/main/resources/config/application-dev.yml +++ b/eladmin-system/src/main/resources/config/application-dev.yml @@ -46,7 +46,7 @@ jwt: header: Authorization # 令牌前缀 token-start-with: Bearer - # 必须使用最少88位的Base64对该令牌进行编码 + # 必须使用最少88位的Base64对该令牌进行编码,可以通过这个加密的密文生成服务器存储的秘钥 base64-secret: ZmQ0ZGI5NjQ0MDQwY2I4MjMxY2Y3ZmI3MjdhN2ZmMjNhODViOTg1ZGE0NTBjMGM4NDA5NzYxMjdjOWMwYWRmZTBlZjlhNGY3ZTg4Y2U3YTE1ODVkZDU5Y2Y3OGYwZWE1NzUzNWQ2YjFjZDc0NGMxZWU2MmQ3MjY1NzJmNTE0MzI= # 令牌过期时间 此处单位/毫秒 ,默认4小时,可在此网站生成 https://www.convertworld.com/zh-hans/time/milliseconds.html token-validity-in-seconds: 14400000