From 0fe0d717dabc61065b88c6fa98362e42a3a10092 Mon Sep 17 00:00:00 2001 From: Kirhhoff <1070280566@qq.com> Date: Mon, 22 Oct 2018 21:31:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=90=E4=BE=9BURL=E7=BA=A7=E5=88=AB?= =?UTF-8?q?=E7=9A=84=E8=AE=BF=E9=97=AE=E4=BF=9D=E6=8A=A4=20=E5=9B=A0?= =?UTF-8?q?=E4=B8=BA=E5=8F=AA=E9=9C=80=E8=A6=81=E4=B8=80=E4=B8=AAAdmin=20?= =?UTF-8?q?=E6=89=80=E4=BB=A5=E6=88=91=E5=B9=B2=E4=BA=86=E3=80=82=E3=80=82?= =?UTF-8?q?=E3=80=82=20=E6=88=91=E6=8A=8A=E9=82=A3=E4=B8=AAWeChatPropertie?= =?UTF-8?q?s=E7=B1=BB=E5=8D=95=E7=8B=AC=E6=91=98=E5=87=BA=E6=9D=A5?= =?UTF-8?q?=E6=94=BE=E6=88=90=E4=BA=86=E4=B8=80=E4=B8=AA=E7=B1=BB=EF=BC=8C?= =?UTF-8?q?=20=E9=99=A4=E4=BA=86=E7=99=BB=E9=99=86=E8=B4=A6=E5=8F=B7?= =?UTF-8?q?=E3=80=81=E5=AF=86=E7=A0=81=E6=88=91=E8=BF=98=E6=B7=BB=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E3=80=82=E3=80=82=20--loginURL=20=09Login=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84URL=20--loginSuccess=20=09=E7=99=BB=E9=99=86?= =?UTF-8?q?=E6=88=90=E5=8A=9F=E4=BB=A5=E5=90=8E=E7=9A=84=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E8=B7=B3=E8=BD=AC=E9=A1=B5=E9=9D=A2=EF=BC=8C=E5=8F=AF=E4=BB=A5?= =?UTF-8?q?=E8=A2=AB=E8=A6=86=E7=9B=96=20--loginError=20=09=E7=99=BB?= =?UTF-8?q?=E9=99=86=E5=A4=B1=E8=B4=A5=E7=9A=84=E8=B7=B3=E8=BD=AC=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=20--logoutURL=20=09=E7=99=BB=E5=87=BA=E7=9A=84?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 这些我全加到了WeChatProperties类的成员里面 所以还需要在we-chat的属性里面再加上这几个URL 我设成了NotNull 总之,如果只需要一个admin,应该只改application配置文件就可以了 --- pom.xml | 14 +++++++ .../market/configuration/SecurityConfig.java | 25 ++++++++++++- .../controllers/wechat/LoginController.java | 16 +------- .../controllers/wechat/WeChatProperties.java | 37 +++++++++++++++++++ 4 files changed, 75 insertions(+), 17 deletions(-) create mode 100644 src/main/java/org/scutsu/market/controllers/wechat/WeChatProperties.java diff --git a/pom.xml b/pom.xml index a2ae6a0..6a6099c 100644 --- a/pom.xml +++ b/pom.xml @@ -79,6 +79,19 @@ spring-boot-configuration-processor true + + + org.springframework.security + spring-security-web + + + org.springframework.security + spring-security-config + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity4 + @@ -91,4 +104,5 @@ + diff --git a/src/main/java/org/scutsu/market/configuration/SecurityConfig.java b/src/main/java/org/scutsu/market/configuration/SecurityConfig.java index 4659e31..2b32602 100644 --- a/src/main/java/org/scutsu/market/configuration/SecurityConfig.java +++ b/src/main/java/org/scutsu/market/configuration/SecurityConfig.java @@ -1,17 +1,38 @@ package org.scutsu.market.configuration; - +import org.scutsu.market.controllers.wechat.*; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { + @Autowired + private WeChatProperties admin; @Override protected void configure(HttpSecurity http) throws Exception { http .authorizeRequests() - .anyRequest().permitAll().and() + .anyRequest().authenticated() + .antMatchers("/**").hasRole("ADMIN") + .and() + .formLogin().loginPage(admin.getLoginURL()) + .defaultSuccessUrl(admin.getLoginSuccess()) + .failureForwardUrl(admin.getLoginError()) + .and() + .logout().logoutSuccessUrl(admin.getLogoutURL()) + .and() .csrf().disable(); } + + @Autowired + protected void Authorize(AuthenticationManagerBuilder Author)throws Exception{ + Author + .inMemoryAuthentication() + .passwordEncoder(new BCryptPasswordEncoder()).withUser(admin.getAppId()) + .password(new BCryptPasswordEncoder().encode(admin.getSecret())).roles("ADMIN"); + } } diff --git a/src/main/java/org/scutsu/market/controllers/wechat/LoginController.java b/src/main/java/org/scutsu/market/controllers/wechat/LoginController.java index 8c3a6e8..d279004 100644 --- a/src/main/java/org/scutsu/market/controllers/wechat/LoginController.java +++ b/src/main/java/org/scutsu/market/controllers/wechat/LoginController.java @@ -17,6 +17,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; +import org.springframework.stereotype.Repository; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; @@ -28,21 +29,6 @@ import java.net.URISyntaxException; import java.util.Map; -@ConfigurationProperties(prefix = "we-chat") -@Validated -@Component -@Data -class WeChatProperties { - - @NotNull - private String appId; - - @NotNull - private String secret; - - @NotNull - private String grantType = "authorization_code"; -} @Data class LoginResult { diff --git a/src/main/java/org/scutsu/market/controllers/wechat/WeChatProperties.java b/src/main/java/org/scutsu/market/controllers/wechat/WeChatProperties.java new file mode 100644 index 0000000..3728471 --- /dev/null +++ b/src/main/java/org/scutsu/market/controllers/wechat/WeChatProperties.java @@ -0,0 +1,37 @@ +package org.scutsu.market.controllers.wechat; + +import lombok.Data; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.stereotype.Component; +import org.springframework.validation.annotation.Validated; + +import javax.validation.constraints.NotNull; + +@ConfigurationProperties(prefix = "we-chat") +@Validated +@Component +@Data +public class WeChatProperties { + + @NotNull + private String appId; + + @NotNull + private String secret; + + @NotNull + private String loginURL; + + @NotNull + private String logoutURL; + + @NotNull + private String loginSuccess; + + @NotNull + private String loginError; + + @NotNull + private String grantType = "authorization_code"; +} +