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";
+}
+