From 6465d3c4125d1ad9a85de124cf772647fbb13dd7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9A=AE=E5=85=89=EF=BC=9A=E5=9F=8E=E4=B8=AD=E5=9F=8E?=
<806783409@qq.com>
Date: Sat, 8 Dec 2018 14:59:26 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E6=95=B4=E7=90=86?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
pom.xml | 58 +----
zyplayer-doc-core/pom.xml | 30 +++
.../doc/core/exception/ConfirmException.java | 30 +++
.../doc/core/json/DocResponseJson.java | 153 ++++++++++++
.../zyplayer/doc/core}/json/ResponseJson.java | 4 +-
zyplayer-doc-db/pom.xml | 6 +-
zyplayer-doc-manage/pom.xml | 14 +-
.../com/zyplayer/doc/manage/Application.java | 8 +-
.../framework/config/CustomizationBean.java | 19 ++
.../config/MgStorageServiceImpl.java | 25 +-
.../config/SwaggerConfiguration.java | 42 +++-
...a => DocAuthenticationSuccessHandler.java} | 22 +-
.../security/DocDetailsServiceImpl.java | 58 +++++
...MyUserDetails.java => DocUserDetails.java} | 10 +-
.../config/security/DocUserFilter.java | 53 +++++
.../{UserUtil.java => DocUserUtil.java} | 8 +-
...UsernamePasswordAuthenticationFilter.java} | 12 +-
.../security/UserDetailsServiceImpl.java | 30 ---
.../config/security/WebSecurity1Config.java | 113 ---------
.../config/security/WebSecurityConfig.java | 53 +++--
.../GlobalHandlerExceptionResolver.java | 119 ++++++++++
.../repository/manage/entity/AuthInfo.java | 105 +++++++++
.../repository/manage/entity/UserAuth.java | 131 +++++++++++
.../repository/manage/entity/UserInfo.java | 157 +++++++++++++
.../manage/mapper/AuthInfoMapper.java | 16 ++
.../manage/mapper/UserAuthMapper.java | 16 ++
.../manage/mapper/UserInfoMapper.java | 16 ++
.../support/generator/CodeGenerator.java | 8 +-
.../service/manage/AuthInfoService.java | 16 ++
.../service/manage/UserAuthService.java | 16 ++
.../service/manage/UserInfoService.java | 16 ++
.../manage/impl/AuthInfoServiceImpl.java | 20 ++
.../manage/impl/UserAuthServiceImpl.java | 20 ++
.../manage/impl/UserInfoServiceImpl.java | 20 ++
.../GeneratorAuthInfoController.java | 20 ++
.../GeneratorUserAuthController.java | 20 ++
.../GeneratorUserInfoController.java | 20 ++
.../GeneratorZyplayerStorageController.java | 20 ++
.../manage/web/manage/AuthInfoController.java | 63 +++++
.../manage/web/manage/HelloController.java | 23 --
.../manage/web/manage/LoginController.java | 58 +++++
.../manage/web/manage/UserAuthController.java | 70 ++++++
.../doc/manage/web/manage/UserController.java | 123 ----------
.../manage/web/manage/UserInfoController.java | 62 +++++
.../swagger/ZyplayerStorageController.java | 10 +-
.../src/main/resources/application.yml | 2 +-
.../mapper/manage/AuthInfoMapper.xml | 5 +
.../mapper/manage/UserAuthMapper.xml | 5 +
.../mapper/manage/UserInfoMapper.xml | 5 +
.../src/main/webapp/statics/common/403.html | 14 ++
.../src/main/webapp/statics/common/404.html | 14 ++
.../src/main/webapp/statics/common/500.html | 14 ++
.../main/webapp/statics/lib/mg/js/common.js | 8 +
.../src/main/webapp/statics/manage/login.html | 12 +-
zyplayer-doc-swagger/README.md | 12 +-
zyplayer-doc-swagger/pom.xml | 23 +-
.../controller/MgHttpRequestController.java | 30 ---
.../controller/MgStorageController.java | 72 ------
.../SwaggerCommonConfiguration.java | 29 ---
.../framework/json/MgUiResponseJson.java | 219 ------------------
.../controller/MgDocumentController.java | 95 ++++----
.../controller/MgHttpRequestController.java | 60 +++++
.../controller/MgStorageController.java | 66 ++++++
.../controller/param/HttpRequestParam.java | 11 +-
.../swagger/controller/vo/HttpCookieVo.java | 12 +-
.../swagger/controller/vo/HttpHeaderVo.java | 2 +-
.../swagger/controller/vo/HttpRequestVo.java | 55 +++++
.../controller/vo/SwaggerLocationVo.java | 69 ++++++
.../configuration/EnableSwaggerMgUi.java | 10 +-
.../configuration/SpringContextUtil.java | 6 +-
.../SwaggerCommonConfiguration.java | 25 ++
.../framework/constant/StorageKeys.java | 4 +-
.../swagger/framework/constant/Toast.java | 2 +-
.../framework/filter/MgUiTestFilter.java | 8 +-
.../swagger/framework/service/MgStorage.java | 47 ++++
.../framework/service/MgStorageService.java | 24 +-
.../src/main/resources/document.html | 25 +-
.../resources/webjars/mg-ui/css/mg-ui.css | 2 +-
.../resources/webjars/mg-ui/js/mg-ui-debug.js | 11 +-
.../main/resources/webjars/mg-ui/js/mg-ui.js | 14 +-
80 files changed, 2043 insertions(+), 882 deletions(-)
create mode 100644 zyplayer-doc-core/pom.xml
create mode 100644 zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/exception/ConfirmException.java
create mode 100644 zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java
rename {zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework => zyplayer-doc-core/src/main/java/com/zyplayer/doc/core}/json/ResponseJson.java (51%)
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/CustomizationBean.java
rename zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/{MyAuthenticationSuccessHandler.java => DocAuthenticationSuccessHandler.java} (72%)
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocDetailsServiceImpl.java
rename zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/{MyUserDetails.java => DocUserDetails.java} (80%)
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserFilter.java
rename zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/{UserUtil.java => DocUserUtil.java} (70%)
rename zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/{MyUsernamePasswordAuthenticationFilter.java => DocUsernamePasswordAuthenticationFilter.java} (74%)
delete mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserDetailsServiceImpl.java
delete mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurity1Config.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/exception/GlobalHandlerExceptionResolver.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/entity/AuthInfo.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/entity/UserAuth.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/entity/UserInfo.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/mapper/AuthInfoMapper.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/mapper/UserAuthMapper.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/repository/manage/mapper/UserInfoMapper.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/AuthInfoService.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/UserAuthService.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/UserInfoService.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/impl/AuthInfoServiceImpl.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/impl/UserAuthServiceImpl.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/service/manage/impl/UserInfoServiceImpl.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/generator/GeneratorAuthInfoController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/generator/GeneratorUserAuthController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/generator/GeneratorUserInfoController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/generator/GeneratorZyplayerStorageController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/AuthInfoController.java
delete mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/HelloController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/LoginController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserAuthController.java
delete mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserController.java
create mode 100644 zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/web/manage/UserInfoController.java
create mode 100644 zyplayer-doc-manage/src/main/resources/mapper/manage/AuthInfoMapper.xml
create mode 100644 zyplayer-doc-manage/src/main/resources/mapper/manage/UserAuthMapper.xml
create mode 100644 zyplayer-doc-manage/src/main/resources/mapper/manage/UserInfoMapper.xml
create mode 100644 zyplayer-doc-manage/src/main/webapp/statics/common/403.html
create mode 100644 zyplayer-doc-manage/src/main/webapp/statics/common/404.html
create mode 100644 zyplayer-doc-manage/src/main/webapp/statics/common/500.html
delete mode 100644 zyplayer-doc-swagger/src/main/java/com/mg/swagger/controller/MgHttpRequestController.java
delete mode 100644 zyplayer-doc-swagger/src/main/java/com/mg/swagger/controller/MgStorageController.java
delete mode 100644 zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework/configuration/SwaggerCommonConfiguration.java
delete mode 100644 zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework/json/MgUiResponseJson.java
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/controller/MgDocumentController.java (77%)
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/controller/MgHttpRequestController.java
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/controller/MgStorageController.java
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/controller/param/HttpRequestParam.java (89%)
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/controller/vo/HttpCookieVo.java (64%)
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/controller/vo/HttpHeaderVo.java (83%)
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/controller/vo/HttpRequestVo.java
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/controller/vo/SwaggerLocationVo.java
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/configuration/EnableSwaggerMgUi.java (70%)
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/configuration/SpringContextUtil.java (88%)
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/framework/configuration/SwaggerCommonConfiguration.java
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/constant/StorageKeys.java (65%)
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/constant/Toast.java (76%)
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/filter/MgUiTestFilter.java (90%)
create mode 100644 zyplayer-doc-swagger/src/main/java/com/zyplayer/doc/swagger/framework/service/MgStorage.java
rename zyplayer-doc-swagger/src/main/java/com/{mg => zyplayer/doc}/swagger/framework/service/MgStorageService.java (54%)
diff --git a/pom.xml b/pom.xml
index 4f996483..bbb1f15a 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,74 +4,35 @@
com.zyplayer
zyplayer-doc
- 1.0.1-SNAPSHOT
+ 1.0.0
pom
zyplayer-doc
定位为所有文档的管理项目,swagger文档、数据库文档、、、、等
-
- org.springframework.boot
- spring-boot-starter-parent
- 2.0.6.RELEASE
-
-
UTF-8
UTF-8
1.8
- 3.0.6
1.2.53
- 2.0.1
- 2.0
- org.springframework.boot
- spring-boot-starter
+ javax.servlet
+ servlet-api
+ 2.5
- org.springframework.boot
- spring-boot-starter-web
+ io.springfox
+ springfox-swagger2
+ 2.7.0
-
- org.springframework.boot
- spring-boot-starter-test
- test
-
-
- mysql
- mysql-connector-java
-
-
- com.baomidou
- mybatis-plus-boot-starter
- ${mybatis.plus.boot.starter.version}
-
-
com.alibaba
fastjson
${fastjson.version}
-
-
- com.zyplayer
- zyplayer-doc-swagger
- ${swagger.mg.ui.version}
-
-
-
- org.apache.velocity
- velocity-engine-core
- ${velocity.engine.core.version}
-
-
-
- org.freemarker
- freemarker
-
@@ -85,6 +46,7 @@
zyplayer-doc-db
zyplayer-doc-manage
- zyplayer-doc-swagger
-
+ zyplayer-doc-swagger
+ zyplayer-doc-core
+
\ No newline at end of file
diff --git a/zyplayer-doc-core/pom.xml b/zyplayer-doc-core/pom.xml
new file mode 100644
index 00000000..e58558fd
--- /dev/null
+++ b/zyplayer-doc-core/pom.xml
@@ -0,0 +1,30 @@
+
+
+ 4.0.0
+
+ com.zyplayer
+ zyplayer-doc
+ 1.0.0
+
+
+ com.zyplayer
+ zyplayer-doc-core
+ 1.0.0
+ zyplayer-doc-core
+
+ http://maven.apache.org
+
+ UTF-8
+ UTF-8
+ 1.8
+
+
+
+ junit
+ junit
+ 3.8.1
+ test
+
+
+
diff --git a/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/exception/ConfirmException.java b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/exception/ConfirmException.java
new file mode 100644
index 00000000..2fcf4705
--- /dev/null
+++ b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/exception/ConfirmException.java
@@ -0,0 +1,30 @@
+package com.zyplayer.doc.core.exception;
+
+/**
+ * 前端提示异常
+ */
+public class ConfirmException extends RuntimeException {
+
+ private static final long serialVersionUID = -7084066605197111614L;
+
+ public ConfirmException() {
+ super();
+ }
+
+ public ConfirmException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
+ super(message, cause, enableSuppression, writableStackTrace);
+ }
+
+ public ConfirmException(String message, Throwable cause) {
+ super(message, cause);
+ }
+
+ public ConfirmException(String message) {
+ super(message);
+ }
+
+ public ConfirmException(Throwable cause) {
+ super(cause);
+ }
+
+}
diff --git a/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java
new file mode 100644
index 00000000..19b79c62
--- /dev/null
+++ b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/DocResponseJson.java
@@ -0,0 +1,153 @@
+package com.zyplayer.doc.core.json;
+
+import java.io.IOException;
+import java.util.Date;
+
+import javax.servlet.http.HttpServletResponse;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.serializer.SerializeConfig;
+import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
+
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * 文档返回数据格式
+ *
+ * @author 暮光:城中城
+ * @since 2018年8月21日
+ */
+public class DocResponseJson implements ResponseJson {
+ private static SerializeConfig mapping = new SerializeConfig();
+ static {
+ mapping.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss"));
+ }
+ @ApiModelProperty(value = "状态码")
+ private Integer errCode;
+ @ApiModelProperty(value = "返回值说明")
+ private String errMsg;
+ @ApiModelProperty(value = "返回数据")
+ private T data;
+
+ public DocResponseJson() {
+ this.errCode = 200;
+ }
+
+ public DocResponseJson(T data) {
+ this.setData(data);
+ this.errCode = 200;
+ }
+
+ public DocResponseJson(int errCode, String errMsg) {
+ super();
+ this.errCode = errCode;
+ this.errMsg = errMsg;
+ }
+
+ public DocResponseJson(int errCode, String errMsg, T data) {
+ super();
+ this.setData(data);
+ this.errCode = errCode;
+ this.errMsg = errMsg;
+ }
+
+ public DocResponseJson(Integer errCode) {
+ super();
+ this.errCode = errCode;
+ }
+
+ public Integer getErrCode() {
+ return errCode;
+ }
+
+ public void setErrCode(Integer errCode) {
+ this.errCode = errCode;
+ }
+
+ public String getErrMsg() {
+ return errMsg;
+ }
+
+ public void setErrMsg(String errMsg) {
+ this.errMsg = errMsg;
+ }
+
+ public T getData() {
+ return data;
+ }
+
+ public void setData(T data) {
+ this.data = data;
+ }
+
+ /**
+ * 提示语
+ *
+ * @author 暮光:城中城
+ * @since 2018年8月7日
+ * @return
+ */
+ public static DocResponseJson warn(String errMsg) {
+ return new DocResponseJson<>(300, errMsg);
+ }
+
+ /**
+ * 错误
+ *
+ * @author 暮光:城中城
+ * @since 2018年8月7日
+ * @return
+ */
+ public static DocResponseJson error(String errMsg) {
+ return new DocResponseJson<>(500, errMsg);
+ }
+
+ /**
+ * 成功的返回方法
+ *
+ * @author 暮光:城中城
+ * @since 2018年8月7日
+ * @return
+ */
+ public static DocResponseJson ok() {
+ return new DocResponseJson<>();
+ }
+
+ /**
+ * 成功的返回方法
+ *
+ * @author 暮光:城中城
+ * @since 2018年8月7日
+ * @return
+ */
+ public static DocResponseJson ok(T data) {
+ if (data == null) {
+ return DocResponseJson.ok();
+ }
+ DocResponseJson responseJson = new DocResponseJson<>();
+ responseJson.setData(data);
+ return responseJson;
+ }
+
+ public String toJson() {
+ return JSON.toJSONString(this, mapping);
+ }
+
+ public void send(HttpServletResponse response) {
+ try {
+ response.setStatus(200);
+ response.setContentType("application/json");
+ response.setCharacterEncoding("UTF-8");
+ response.setHeader("Cache-Control", "no-cache, must-revalidate");
+ response.getWriter().write(toJson());
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ @Override
+ public String toString() {
+ return "DefaultResponseJson [errCode=" + errCode + ", errMsg=" + errMsg + ", data=" + data + "]";
+ }
+
+}
diff --git a/zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework/json/ResponseJson.java b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/ResponseJson.java
similarity index 51%
rename from zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework/json/ResponseJson.java
rename to zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/ResponseJson.java
index 503fc080..42cbb966 100644
--- a/zyplayer-doc-swagger/src/main/java/com/mg/swagger/framework/json/ResponseJson.java
+++ b/zyplayer-doc-core/src/main/java/com/zyplayer/doc/core/json/ResponseJson.java
@@ -1,4 +1,4 @@
-package com.mg.swagger.framework.json;
+package com.zyplayer.doc.core.json;
/**
* json视图
@@ -6,6 +6,6 @@ package com.mg.swagger.framework.json;
* @author 暮光:城中城
* @since 2018年8月21日
*/
-public interface ResponseJson {
+public interface ResponseJson {
}
diff --git a/zyplayer-doc-db/pom.xml b/zyplayer-doc-db/pom.xml
index cfd68d55..b391b966 100644
--- a/zyplayer-doc-db/pom.xml
+++ b/zyplayer-doc-db/pom.xml
@@ -84,9 +84,9 @@
- scm:git@git.oschina.net:zyplayer/swagger-mg-ui.git
- scm:git@git.oschina.net:zyplayer/swagger-mg-ui.git
- git@git.oschina.net:zyplayer/swagger-mg-ui.git
+ scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
+ scm:git@git.oschina.net:zyplayer/zyplayer-doc.git
+ git@git.oschina.net:zyplayer/zyplayer-doc.git
diff --git a/zyplayer-doc-manage/pom.xml b/zyplayer-doc-manage/pom.xml
index 5e54abda..c45bd2e7 100644
--- a/zyplayer-doc-manage/pom.xml
+++ b/zyplayer-doc-manage/pom.xml
@@ -4,8 +4,8 @@
com.zyplayer
zyplayer-doc-manage
- 1.0.1-SNAPSHOT
- jar
+ 1.0.1
+ war
zyplayer-doc-manage
定位为所有文档的管理项目,swagger文档、数据库文档、、、、等
@@ -22,7 +22,8 @@
1.8
3.0.6
1.2.53
- 2.0.1
+ 2.0.1
+ 1.0.0
2.0
@@ -68,7 +69,12 @@
com.zyplayer
zyplayer-doc-swagger
- ${swagger.mg.ui.version}
+ ${zyplayer.doc.swagger.version}
+
+
+ com.zyplayer
+ zyplayer-doc-core
+ ${zyplayer.doc.core.version}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/Application.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/Application.java
index e7177d13..2df33ce1 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/Application.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/Application.java
@@ -10,6 +10,7 @@ import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.core.env.Environment;
import java.net.InetAddress;
+import java.util.Optional;
/**
* 程序启动器
@@ -27,11 +28,14 @@ public class Application extends SpringBootServletInitializer {
public static void main(String[] args) throws Exception {
ConfigurableApplicationContext application = SpringApplication.run(Application.class, args);
Environment env = application.getEnvironment();
+ String contextPath = env.getProperty("server.servlet.context-path");
+ contextPath = Optional.ofNullable(contextPath).orElse("").replaceFirst("/", "");
+ contextPath = (contextPath.length() <= 0 || contextPath.endsWith("/")) ? contextPath : contextPath + "/";
logger.info("\n----------------------------------------------------------\n\t" +
"\t\t地址列表\n\t" +
- "文档地址:http://{}:{}/document.html\n" +
+ "文档地址:http://{}:{}/{}document.html\n" +
"----------------------------------------------------------",
- InetAddress.getLocalHost().getHostAddress(), env.getProperty("server.port")
+ InetAddress.getLocalHost().getHostAddress(), env.getProperty("server.port"), contextPath
);
}
}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/CustomizationBean.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/CustomizationBean.java
new file mode 100644
index 00000000..72ea2104
--- /dev/null
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/CustomizationBean.java
@@ -0,0 +1,19 @@
+package com.zyplayer.doc.manage.framework.config;
+
+import org.springframework.boot.web.server.ErrorPage;
+import org.springframework.boot.web.server.WebServerFactoryCustomizer;
+import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.http.HttpStatus;
+
+@Configuration
+public class CustomizationBean implements WebServerFactoryCustomizer {
+
+ @Override
+ public void customize(ConfigurableServletWebServerFactory factory) {
+ factory.addErrorPages(new ErrorPage(HttpStatus.FORBIDDEN, "/statics/common/403.html"));
+ factory.addErrorPages(new ErrorPage(HttpStatus.NOT_FOUND, "/statics/common/404.html"));
+ factory.addErrorPages(new ErrorPage(HttpStatus.INTERNAL_SERVER_ERROR, "/statics/common/500.html"));
+ }
+
+}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/MgStorageServiceImpl.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/MgStorageServiceImpl.java
index 9163dba4..559117e6 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/MgStorageServiceImpl.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/MgStorageServiceImpl.java
@@ -1,13 +1,19 @@
package com.zyplayer.doc.manage.framework.config;
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.mg.swagger.framework.service.MgStorageService;
import com.zyplayer.doc.manage.repository.manage.entity.ZyplayerStorage;
import com.zyplayer.doc.manage.service.manage.ZyplayerStorageService;
+import com.zyplayer.doc.swagger.framework.service.MgStorage;
+import com.zyplayer.doc.swagger.framework.service.MgStorageService;
/**
* 申明为@Service之后网页上才能使用存储能力,同时需要在@EnableSwagger2的地方添加@EnableSwaggerMgUi注解,
@@ -31,7 +37,7 @@ public class MgStorageServiceImpl implements MgStorageService {
@Override
public String get(String key) {
QueryWrapper wrapper = new QueryWrapper<>();
- wrapper.eq(true, "doc_key", key);
+ wrapper.eq("doc_key", key);
ZyplayerStorage zyplayerStorage = zyplayerStorageService.getOne(wrapper);
if (zyplayerStorage == null) {
return null;
@@ -39,6 +45,21 @@ public class MgStorageServiceImpl implements MgStorageService {
return zyplayerStorage.getDocValue();
}
+ @Override
+ public List like(String key, String value) {
+ QueryWrapper wrapper = new QueryWrapper<>();
+ wrapper.like(StringUtils.isNotBlank(key), "doc_key", key);
+ wrapper.like(StringUtils.isNotBlank(value), "doc_value", value);
+ List storageList = zyplayerStorageService.list(wrapper);
+ if (storageList == null || storageList.isEmpty()) {
+ return Collections.emptyList();
+ }
+ List resultList = storageList.stream().map(val -> {
+ return new MgStorage(val.getDocKey(), val.getDocValue());
+ }).collect(Collectors.toList());
+ return resultList;
+ }
+
/**
* 使用数据库来存储,例: storageMapper.updateOrInsert(key, value);
*/
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/SwaggerConfiguration.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/SwaggerConfiguration.java
index ce25e95f..2c0a801b 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/SwaggerConfiguration.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/SwaggerConfiguration.java
@@ -1,9 +1,21 @@
package com.zyplayer.doc.manage.framework.config;
+import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
-import com.mg.swagger.framework.configuration.EnableSwaggerMgUi;
+import com.google.common.base.Predicates;
+import com.zyplayer.doc.swagger.framework.configuration.EnableSwaggerMgUi;
+
+import io.swagger.annotations.Api;
+import springfox.documentation.builders.ApiInfoBuilder;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.service.ApiInfo;
+import springfox.documentation.service.Contact;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
/**
* 不需要管理本项目的文档,只需要开启@EnableSwaggerMgUi即可
@@ -11,12 +23,34 @@ import com.mg.swagger.framework.configuration.EnableSwaggerMgUi;
* @since 2018年11月11日
*/
@Configuration
+@EnableSwagger2
@EnableSwaggerMgUi(
- selfDoc = false,// 不开启自身的文档,本项目只当管理文档的项目使用
- defaultResources = {// selfDoc=false时有用,启动后第一次访问没有数据情况下需要加载进来的swagger-resources地址
+ selfDoc = true,// 是否开启自身的文档
+ defaultResources = {// 启动后第一次访问没有数据情况下需要加载进来的swagger-resources地址
//"http://localhost:8080/swagger-resources"
}
)
public class SwaggerConfiguration {
-
+
+ @Bean
+ public Docket createRestApi() {
+ return new Docket(DocumentationType.SWAGGER_2)
+ .apiInfo(apiInfo())
+ .select()
+ .apis(Predicates.or(
+ RequestHandlerSelectors.basePackage("com.zyplayer.doc.manage"),
+ RequestHandlerSelectors.withClassAnnotation(Api.class)))
+ .paths(PathSelectors.any())
+ .build();
+ }
+
+ private ApiInfo apiInfo() {
+ return new ApiInfoBuilder()
+ .title("zyplayer-doc-manage接口文档")
+ .description("欢迎使用")
+ .termsOfServiceUrl("")
+ .contact(new Contact("", "", ""))
+ .version("1.0")
+ .build();
+ }
}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyAuthenticationSuccessHandler.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocAuthenticationSuccessHandler.java
similarity index 72%
rename from zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyAuthenticationSuccessHandler.java
rename to zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocAuthenticationSuccessHandler.java
index 7a17a702..cbccd5a8 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyAuthenticationSuccessHandler.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocAuthenticationSuccessHandler.java
@@ -1,4 +1,5 @@
package com.zyplayer.doc.manage.framework.config.security;
+
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
@@ -7,6 +8,8 @@ import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.DefaultRedirectStrategy;
import org.springframework.security.web.RedirectStrategy;
@@ -15,13 +18,12 @@ import org.springframework.security.web.savedrequest.HttpSessionRequestCache;
import org.springframework.security.web.savedrequest.RequestCache;
import org.springframework.security.web.savedrequest.SavedRequest;
-/**
- * 备用
- * @author Administrator
- *
- */
-public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
+import com.alibaba.fastjson.JSON;
+public class DocAuthenticationSuccessHandler implements AuthenticationSuccessHandler {
+
+ private static Logger logger = LoggerFactory.getLogger(DocAuthenticationSuccessHandler.class);
+
private RequestCache requestCache = new HttpSessionRequestCache();
private RedirectStrategy redirectStrategy = new DefaultRedirectStrategy();
@@ -29,18 +31,16 @@ public class MyAuthenticationSuccessHandler implements AuthenticationSuccessHand
public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, Authentication authentication) throws IOException, ServletException {
SavedRequest savedRequest = requestCache.getRequest(request, response);
String targetUrl = savedRequest.getRedirectUrl();
-// boolean isAjax = HttpHelper.isAjaxRequest(request);
- boolean isAjax = true;
+ boolean isAjax = "XMLHttpRequest".equals(request.getHeader("X-Requested-With"));
if (isAjax) {
Map result = new HashMap();
result.put("url", targetUrl);
- response.getWriter().print(result.toString());
+ response.getWriter().print(JSON.toJSONString(result));
response.getWriter().flush();
} else {
redirectStrategy.sendRedirect(request, response, targetUrl);
}
-
- System.out.println("Redirecting to DefaultSavedRequest Url: " + targetUrl);
+ logger.info("Redirecting to DefaultSavedRequest Url: " + targetUrl);
}
}
\ No newline at end of file
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocDetailsServiceImpl.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocDetailsServiceImpl.java
new file mode 100644
index 00000000..96cb098e
--- /dev/null
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocDetailsServiceImpl.java
@@ -0,0 +1,58 @@
+package com.zyplayer.doc.manage.framework.config.security;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.security.core.GrantedAuthority;
+import org.springframework.security.core.authority.SimpleGrantedAuthority;
+import org.springframework.security.core.userdetails.UserDetails;
+import org.springframework.security.core.userdetails.UserDetailsService;
+import org.springframework.security.core.userdetails.UsernameNotFoundException;
+import org.springframework.stereotype.Service;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.zyplayer.doc.manage.repository.manage.entity.AuthInfo;
+import com.zyplayer.doc.manage.repository.manage.entity.UserAuth;
+import com.zyplayer.doc.manage.repository.manage.entity.UserInfo;
+import com.zyplayer.doc.manage.service.manage.AuthInfoService;
+import com.zyplayer.doc.manage.service.manage.UserAuthService;
+import com.zyplayer.doc.manage.service.manage.UserInfoService;
+
+@Service
+public class DocDetailsServiceImpl implements UserDetailsService {
+
+ @Autowired
+ private UserInfoService userInfoService;
+ @Autowired
+ private UserAuthService userAuthService;
+ @Autowired
+ private AuthInfoService authInfoService;
+
+ @Override
+ public UserDetails loadUserByUsername(String userNo) throws UsernameNotFoundException {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("user_no", userNo);
+ UserInfo userInfo = userInfoService.getOne(queryWrapper);
+ if (userInfo == null) {
+ throw new UsernameNotFoundException("用户名'" + userNo + "'没有找到!");
+ }
+ QueryWrapper authWrapper = new QueryWrapper<>();
+ authWrapper.eq("user_id", userInfo.getId()).eq("del_flag", "0");
+ List userAuthList = userAuthService.list(authWrapper);
+ List authorities = new ArrayList();
+ if (userAuthList != null && userAuthList.size() > 0) {
+ List authIdList = userAuthList.stream().collect(Collectors.mapping(UserAuth::getAuthId, Collectors.toList()));
+ Collection authInfoList = authInfoService.listByIds(authIdList);
+ authInfoList.forEach(val -> {
+ authorities.add(new SimpleGrantedAuthority(val.getAuthName()));
+ });
+ }
+ //String pwdMd5 = DigestUtils.md5DigestAsHex(userInfo.getPassword().getBytes());
+ DocUserDetails userDetails = new DocUserDetails(userInfo.getId(), userInfo.getUserNo(), userInfo.getPassword(), true, authorities);
+ return userDetails;
+ }
+
+}
\ No newline at end of file
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUserDetails.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserDetails.java
similarity index 80%
rename from zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUserDetails.java
rename to zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserDetails.java
index 2db3d711..b928cf02 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUserDetails.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserDetails.java
@@ -5,16 +5,16 @@ import java.util.Collection;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.userdetails.UserDetails;
-public class MyUserDetails implements UserDetails {
+public class DocUserDetails implements UserDetails {
private static final long serialVersionUID = 1L;
- private Integer userId;
+ private Long userId;
private String username;
private String password;
private boolean enabled;
private Collection extends GrantedAuthority> authorities;
- public MyUserDetails(Integer userId, String username, String password, boolean enabled) {
+ public DocUserDetails(Long userId, String username, String password, boolean enabled) {
super();
this.userId = userId;
this.username = username;
@@ -22,7 +22,7 @@ public class MyUserDetails implements UserDetails {
this.enabled = enabled;
}
- public MyUserDetails(Integer userId, String username, String password, boolean enabled,
+ public DocUserDetails(Long userId, String username, String password, boolean enabled,
Collection extends GrantedAuthority> authorities) {
super();
this.userId = userId;
@@ -32,7 +32,7 @@ public class MyUserDetails implements UserDetails {
this.authorities = authorities;
}
- public Integer getUserId() {
+ public Long getUserId() {
return this.userId;
}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserFilter.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserFilter.java
new file mode 100644
index 00000000..7e80942c
--- /dev/null
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserFilter.java
@@ -0,0 +1,53 @@
+package com.zyplayer.doc.manage.framework.config.security;
+
+import java.io.IOException;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.Cookie;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class DocUserFilter implements Filter{
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+ HttpServletRequest httpRequest = (HttpServletRequest) request;
+ Cookie[] cookies = httpRequest.getCookies();
+ boolean haveCtx = false;
+ Object ctxObj = httpRequest.getServletContext().getAttribute("ctx");
+ String ctxStr = String.valueOf(ctxObj);
+ if (cookies != null && cookies.length > 0) {
+ for (Cookie cookie : cookies) {
+ if ("ctx".equals(cookie.getName()) && ctxStr.equals(cookie.getValue())) {
+ haveCtx = true;
+ break;
+ }
+ }
+ }
+ if (!haveCtx) {
+ // 前后端分离的,前段拿不到项目名,直接写/是不对的,只有后端放到cookie里给前端
+ HttpServletResponse httpResponse = (HttpServletResponse) response;
+ Cookie cookieAdd = new Cookie("ctx", ctxStr);
+ cookieAdd.setPath("/");
+ httpResponse.addCookie(cookieAdd);
+ }
+ chain.doFilter(httpRequest, response);
+ }
+
+ @Override
+ public void destroy() {
+ }
+
+}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserUtil.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserUtil.java
similarity index 70%
rename from zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserUtil.java
rename to zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserUtil.java
index 8ebc71d0..4d531cd0 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserUtil.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUserUtil.java
@@ -6,20 +6,20 @@ import org.springframework.security.core.context.SecurityContextHolder;
/**
* 用户工具类
*/
-public class UserUtil {
+public class DocUserUtil {
/**
* 获取当前用户
* @return
*/
- public static MyUserDetails getCurrentUser() {
+ public static DocUserDetails getCurrentUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
Object principal = null;
if (authentication != null) {
principal = authentication.getPrincipal();
}
- if (principal != null && principal instanceof MyUserDetails) {
- return (MyUserDetails) principal;
+ if (principal != null && principal instanceof DocUserDetails) {
+ return (DocUserDetails) principal;
}
return null;
}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUsernamePasswordAuthenticationFilter.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUsernamePasswordAuthenticationFilter.java
similarity index 74%
rename from zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUsernamePasswordAuthenticationFilter.java
rename to zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUsernamePasswordAuthenticationFilter.java
index 97ddf5cd..0ace5519 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/MyUsernamePasswordAuthenticationFilter.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/DocUsernamePasswordAuthenticationFilter.java
@@ -10,9 +10,9 @@ import org.springframework.security.core.Authentication;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter;
-public class MyUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
+public class DocUsernamePasswordAuthenticationFilter extends UsernamePasswordAuthenticationFilter {
// 是否开启验证码功能
- private boolean isOpenValidateCode = true;
+ private boolean isOpenValidateCode = false;
public static final String VALIDATE_CODE = "validateCode";
@@ -25,13 +25,11 @@ public class MyUsernamePasswordAuthenticationFilter extends UsernamePasswordAuth
protected void checkValidateCode(HttpServletRequest request) {
HttpSession session = request.getSession();
-
- String sessionValidateCode = obtainSessionValidateCode(session);
- sessionValidateCode = "1234";// 做个假的验证码;
+ String sessionCode = this.obtainSessionValidateCode(session);
// 让上一次的验证码失效
session.setAttribute(VALIDATE_CODE, null);
- String validateCodeParameter = obtainValidateCodeParameter(request);
- if (StringUtils.isEmpty(validateCodeParameter) || !sessionValidateCode.equalsIgnoreCase(validateCodeParameter)) {
+ String parameterCode = this.obtainValidateCodeParameter(request);
+ if (StringUtils.isEmpty(sessionCode) || !sessionCode.equalsIgnoreCase(parameterCode)) {
throw new AuthenticationServiceException("验证码错误!");
}
}
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserDetailsServiceImpl.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserDetailsServiceImpl.java
deleted file mode 100644
index a4a23109..00000000
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/UserDetailsServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.zyplayer.doc.manage.framework.config.security;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.core.authority.SimpleGrantedAuthority;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-import org.springframework.security.core.userdetails.UsernameNotFoundException;
-import org.springframework.stereotype.Service;
-import org.springframework.util.DigestUtils;
-
-@Service
-public class UserDetailsServiceImpl implements UserDetailsService {
- private Logger logger = LoggerFactory.getLogger(this.getClass());
-
- @Override
- public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
- if ("1".equals(username)) {
- List authorities = new ArrayList();
- authorities.add(new SimpleGrantedAuthority("ROLE_1"));
- String pwd = DigestUtils.md5DigestAsHex("1".getBytes());
- return new MyUserDetails(1, "1", pwd, true, authorities);
- }
- throw new UsernameNotFoundException("用户名 '" + username + "'没有找到!");
- }
-}
\ No newline at end of file
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurity1Config.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurity1Config.java
deleted file mode 100644
index 2e2bed73..00000000
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurity1Config.java
+++ /dev/null
@@ -1,113 +0,0 @@
-package com.zyplayer.doc.manage.framework.config.security;
-//package com.zyplayer.doc.manage.framework.config.security;
-//
-//import java.io.IOException;
-//import java.io.PrintWriter;
-//
-//import javax.servlet.ServletException;
-//import javax.servlet.http.HttpServletRequest;
-//import javax.servlet.http.HttpServletResponse;
-//
-//import org.springframework.beans.factory.annotation.Autowired;
-//import org.springframework.context.annotation.Bean;
-//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.builders.WebSecurity;
-//import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
-//import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
-//import org.springframework.security.core.Authentication;
-//import org.springframework.security.core.AuthenticationException;
-//import org.springframework.security.web.authentication.AuthenticationFailureHandler;
-//import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
-//import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler;
-//import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler;
-//
-//@Configuration
-//@EnableWebSecurity // 注解开启Spring Security的功能
-//public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
-//
-// @Override
-// protected void configure(HttpSecurity http) throws Exception {
-// http.authorizeRequests()//定义哪些url需要保护,哪些url不需要保护
-// .antMatchers("/statics/lib/**", "/message/").permitAll()//定义不需要认证就可以访问
-// .anyRequest()
-// .authenticated()
-// .and()
-// .formLogin()
-// .loginPage("/statics/manage/login.html")// 定义当需要用户登录时候,转到的登录页面
-// .successHandler(new AuthenticationSuccessHandler() {
-// @Override
-// public void onAuthenticationSuccess(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Authentication authentication) throws IOException, ServletException {
-// httpServletResponse.setContentType("application/json;charset=utf-8");
-// PrintWriter out = httpServletResponse.getWriter();
-// out.write("{\"status\":\"ok\",\"msg\":\"登录成功\"}");
-// out.flush();
-// out.close();
-// }
-// }).failureHandler(new AuthenticationFailureHandler() {
-// @Override
-// public void onAuthenticationFailure(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, AuthenticationException e) throws IOException, ServletException {
-// httpServletResponse.setContentType("application/json;charset=utf-8");
-// PrintWriter out = httpServletResponse.getWriter();
-// out.write("{\"status\":\"error\",\"msg\":\"登录失败\"}");
-// out.flush();
-// out.close();
-// }
-// })
-// .permitAll()
-// .loginProcessingUrl("/user/login")
-// .usernameParameter("username")
-// .passwordParameter("password")
-// .permitAll()
-// .and()
-// .logout()
-// .permitAll()
-// .and()
-// .csrf()
-// .disable();
-// }
-//
-// @Override
-// protected void configure(AuthenticationManagerBuilder auth) throws Exception {
-// auth.userDetailsService(userDetailsServiceImpl());//.passwordEncoder(new Md5PasswordEncoder());
-// }
-//
-// @Bean
-// public UserDetailsServiceImpl userDetailsServiceImpl() {
-// return new UserDetailsServiceImpl();
-// }
-//
-// @Bean
-// public MyUsernamePasswordAuthenticationFilter myUsernamePasswordAuthenticationFilter() throws Exception {
-// MyUsernamePasswordAuthenticationFilter myFilter = new MyUsernamePasswordAuthenticationFilter();
-// myFilter.setAuthenticationManager(authenticationManagerBean());
-// myFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler());
-// myFilter.setAuthenticationFailureHandler(authenticationFailureHandler());
-// myFilter.setRememberMeServices(tokenBasedRememberMeServices());
-// return myFilter;
-// }
-//
-// @Bean
-// public AuthenticationSuccessHandler authenticationSuccessHandler() {
-// return new SimpleUrlAuthenticationSuccessHandler("/login/success");
-// }
-//
-// @Bean
-// public AuthenticationFailureHandler authenticationFailureHandler() {
-// return new SimpleUrlAuthenticationFailureHandler("/login/failure");
-// }
-//
-// @Override
-// public void configure(WebSecurity web) throws Exception {
-// web.ignoring().antMatchers("/statics/lib/**", "**/css/**", "**/js/**", "**/img/**");
-// }
-//
-// @Autowired
-// public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {
-// //在内存中创建了一个用户,该用户的名称为user,密码为password,用户角色为ADMIN
-// auth.inMemoryAuthentication()
-// .withUser("user").password("password").roles("ADMIN");
-// }
-//}
-//
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
index f2261ba4..4666a2c8 100644
--- a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/config/security/WebSecurityConfig.java
@@ -6,6 +6,7 @@ import org.springframework.core.annotation.Order;
import org.springframework.security.authentication.AuthenticationManager;
import org.springframework.security.authentication.RememberMeAuthenticationProvider;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
+import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.builders.WebSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
@@ -21,9 +22,10 @@ import org.springframework.security.web.authentication.rememberme.RememberMeAuth
import org.springframework.security.web.authentication.rememberme.TokenBasedRememberMeServices;
import org.springframework.util.DigestUtils;
+@Order(1)
@Configuration
@EnableWebSecurity
-@Order(1)
+@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Bean
@@ -37,38 +39,34 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
*/
@Override
public void configure(WebSecurity web) throws Exception {
- web.ignoring().antMatchers("/statics/lib/**", "/css/**", "/js/**", "/img/**");
+ web.ignoring().antMatchers("/statics/lib/**", "/css/**", "/js/**", "/img/**", "/swagger-resources", "/v2/api-docs");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
+ String loginPage = "/statics/manage/login.html";
+
http.authorizeRequests().antMatchers("/login/**").permitAll()//为了测试其他功能,设置“ /** ”允许所有请求
- // user权限可以访问的请求
- .antMatchers("/security/user").hasRole("user")
- // admin权限可以访问的请求
- .antMatchers("/security/admin").hasRole("admin")
- // SpEL表达式:需要拥有user权限,且进行了完全认证
- .antMatchers("/user/account").access("hasRole('user') and isFullyAuthenticated()")
- // 其他地址的访问均需验证权限(需要登录)
+ .antMatchers("/document.html").hasAuthority("DOC_ALL")
+ // 其他地址的访问均需登录
.anyRequest().authenticated().and()
// 添加验证码验证
- .addFilterAt(myUsernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class).exceptionHandling()
- .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint("/statics/manage/login.html")).and()
- .addFilterAt(rememberMeAuthenticationFilter(), RememberMeAuthenticationFilter.class)
+ .addFilterAt(myUsernamePasswordAuthenticationFilter(), UsernamePasswordAuthenticationFilter.class)
+ .exceptionHandling()
+ .authenticationEntryPoint(new LoginUrlAuthenticationEntryPoint(loginPage))
+ .and().addFilterAt(rememberMeAuthenticationFilter(), RememberMeAuthenticationFilter.class)
// 指定登录页面的请求路径
- .formLogin().loginPage("/statics/manage/login.html")
+ .formLogin().loginPage(loginPage)
// 登陆处理路径
- .loginProcessingUrl("/login").permitAll().and()
- // 退出请求的默认路径为logout,下面改为signout,
- // 成功退出登录后的url可以用logoutSuccessUrl设置
- .logout().deleteCookies("remember-me")
- .logoutUrl("/signout")
- .logoutSuccessUrl("/statics/manage/login.html")
- .permitAll().and()
+ .loginProcessingUrl("/login").permitAll()
+ // 退出请求的默认路径为logout
+ .and().logout().deleteCookies("remember-me")
+ .logoutUrl("/logout").logoutSuccessUrl(loginPage)
+ .permitAll()
// 开启rememberMe,设置一个私钥专供testall项目使用,注意与下面TokenBasedRememberMeServices的key保持一致
// .rememberMe().key("testallKey").and()
// 关闭csrf
- .csrf().disable();
+ .and().csrf().disable();
}
@Override
@@ -81,19 +79,20 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
}
@Override
public boolean matches(CharSequence charSequence, String s) {
- return s.equals(DigestUtils.md5DigestAsHex(charSequence.toString().getBytes()));
+ String digestAsHex = DigestUtils.md5DigestAsHex(charSequence.toString().getBytes());
+ return s.equals(digestAsHex);
}
}).and().authenticationProvider(rememberMeAuthenticationProvider());
}
@Bean
- public UserDetailsServiceImpl userDetailsServiceImpl() {
- return new UserDetailsServiceImpl();
+ public DocDetailsServiceImpl userDetailsServiceImpl() {
+ return new DocDetailsServiceImpl();
}
@Bean
- public MyUsernamePasswordAuthenticationFilter myUsernamePasswordAuthenticationFilter() throws Exception {
- MyUsernamePasswordAuthenticationFilter myFilter = new MyUsernamePasswordAuthenticationFilter();
+ public DocUsernamePasswordAuthenticationFilter myUsernamePasswordAuthenticationFilter() throws Exception {
+ DocUsernamePasswordAuthenticationFilter myFilter = new DocUsernamePasswordAuthenticationFilter();
myFilter.setAuthenticationManager(authenticationManagerBean());
myFilter.setAuthenticationSuccessHandler(authenticationSuccessHandler());
myFilter.setAuthenticationFailureHandler(authenticationFailureHandler());
@@ -133,5 +132,5 @@ public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
RememberMeAuthenticationFilter myFilter = new RememberMeAuthenticationFilter(authenticationManagerBean(), tokenBasedRememberMeServices());
return myFilter;
}
-
+
}
\ No newline at end of file
diff --git a/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/exception/GlobalHandlerExceptionResolver.java b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/exception/GlobalHandlerExceptionResolver.java
new file mode 100644
index 00000000..405042e2
--- /dev/null
+++ b/zyplayer-doc-manage/src/main/java/com/zyplayer/doc/manage/framework/exception/GlobalHandlerExceptionResolver.java
@@ -0,0 +1,119 @@
+package com.zyplayer.doc.manage.framework.exception;
+
+import java.io.IOException;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.commons.lang.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.MediaType;
+import org.springframework.security.access.AccessDeniedException;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.ResponseBody;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.method.HandlerMethod;
+import org.springframework.web.servlet.ModelAndView;
+import org.springframework.web.servlet.handler.SimpleMappingExceptionResolver;
+
+import com.alibaba.fastjson.JSON;
+import com.zyplayer.doc.core.exception.ConfirmException;
+import com.zyplayer.doc.core.json.DocResponseJson;
+import com.zyplayer.doc.core.json.ResponseJson;
+
+/**
+ * 全局异常处理器
+ */
+@Component
+public class GlobalHandlerExceptionResolver extends SimpleMappingExceptionResolver {
+ private static final Logger LOGGER = LoggerFactory.getLogger(GlobalHandlerExceptionResolver.class);
+
+ @Override
+ public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
+ LOGGER.error("---自定义异常处理---", ex);
+ request.setAttribute("throwable", ex);
+ ModelAndView mv = new ModelAndView();
+ response.setStatus(HttpStatus.OK.value());// 设置状态码
+ response.setContentType(MediaType.APPLICATION_JSON_VALUE);// 设置ContentType
+ response.setCharacterEncoding("UTF-8");// 避免乱码
+ response.setHeader("Cache-Control", "no-cache, must-revalidate");
+ DocResponseJson