commit aaae256ff3654d5cf9889a4ed1ac257791e72561
Author: life <1733802689@qq.com>
Date: Fri Oct 6 21:20:45 2023 +0800
初始化
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..73f69e0
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
+# Editor-based HTTP Client requests
+/httpRequests/
diff --git a/.idea/compiler.xml b/.idea/compiler.xml
new file mode 100644
index 0000000..7267ac8
--- /dev/null
+++ b/.idea/compiler.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml
new file mode 100644
index 0000000..6560a98
--- /dev/null
+++ b/.idea/inspectionProfiles/Project_Default.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
new file mode 100644
index 0000000..2a89eda
--- /dev/null
+++ b/.idea/jarRepositories.xml
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..88aa9a7
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,14 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/demo11.iml b/demo11.iml
new file mode 100644
index 0000000..78b2cc5
--- /dev/null
+++ b/demo11.iml
@@ -0,0 +1,2 @@
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..35827c3
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,29 @@
+
+
+ 4.0.0
+
+ com.bwie
+ demo11
+ 1.0-SNAPSHOT
+
+
+ spring-boot-dependencies
+ org.springframework.boot
+ 2.7.15
+
+
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
diff --git a/src/main/java/com/bwie/App.java b/src/main/java/com/bwie/App.java
new file mode 100644
index 0000000..04ce79e
--- /dev/null
+++ b/src/main/java/com/bwie/App.java
@@ -0,0 +1,12 @@
+package com.bwie;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+
+@SpringBootApplication
+public class App {
+
+ public static void main(String[] args) {
+ SpringApplication.run(App.class);
+ }
+}
diff --git a/src/main/java/com/bwie/Filter/TokenFilter.java b/src/main/java/com/bwie/Filter/TokenFilter.java
new file mode 100644
index 0000000..f717e7f
--- /dev/null
+++ b/src/main/java/com/bwie/Filter/TokenFilter.java
@@ -0,0 +1,82 @@
+package com.bwie.Filter;
+
+
+import com.bwie.config.LoginUserMap;
+import com.bwie.domian.UserInfo;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+import java.nio.charset.StandardCharsets;
+
+
+@Slf4j
+//注册到容器中
+@Component
+//1、实现Filter,然后重写init,doFilter,destroy方法
+public class TokenFilter implements Filter {
+
+
+
+
+ String WHILE_LIST="/login";
+ String TOKEN_USER_KEY="token:user:";
+
+
+ @Override
+ public void init(FilterConfig filterConfig) throws ServletException {
+ Filter.super.init(filterConfig);
+ }
+
+
+ //过滤方法
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ //先将其转成HttpServletRequest
+ HttpServletRequest request=(HttpServletRequest) servletRequest;
+
+ String requestURI = request.getRequestURI();
+ //如果不在白名单中,则检测token是否正常
+ if(!WHILE_LIST.contains(requestURI)){
+
+ //获取请求头的参数
+ String token = request.getHeader("token");
+ if(token == null || token.length() == 0){
+ resp(servletResponse,"账号未登录");
+ return;
+ }
+
+ //从redis中获取token是否存在,是否过期
+ UserInfo userInfo = LoginUserMap.get(token);
+ if(userInfo == null){
+ resp(servletResponse,"账号未登录");
+ return;
+ }
+
+ }
+
+ filterChain.doFilter(servletRequest, servletResponse);
+ }
+
+
+
+ @Override
+ public void destroy() {
+ Filter.super.destroy();
+ }
+
+
+ //相应方法封装
+ private void resp(ServletResponse servletResponse,String msg) throws IOException {
+ HttpServletResponse response=(HttpServletResponse) servletResponse;
+ ServletOutputStream outputStream = response.getOutputStream();
+ response.setStatus(401);
+ response.setContentType("application/json");
+ outputStream.write(msg.getBytes(StandardCharsets.UTF_8));
+ }
+}
+
diff --git a/src/main/java/com/bwie/config/LoginUserMap.java b/src/main/java/com/bwie/config/LoginUserMap.java
new file mode 100644
index 0000000..19dd937
--- /dev/null
+++ b/src/main/java/com/bwie/config/LoginUserMap.java
@@ -0,0 +1,24 @@
+package com.bwie.config;
+
+import com.bwie.domian.UserInfo;
+
+import java.util.HashMap;
+import java.util.Map;
+
+public class LoginUserMap {
+
+ private static final Map userMap= new HashMap<>();
+
+
+ public static void put(String token,UserInfo userInfo){
+ userMap.put(token,userInfo);
+ }
+
+ public static UserInfo get(String token){
+ return userMap.get(token);
+ }
+
+ public static void remove(String token){
+ userMap.remove(token);
+ }
+}
diff --git a/src/main/java/com/bwie/config/WebMvcConfig.java b/src/main/java/com/bwie/config/WebMvcConfig.java
new file mode 100644
index 0000000..16a65cf
--- /dev/null
+++ b/src/main/java/com/bwie/config/WebMvcConfig.java
@@ -0,0 +1,39 @@
+package com.bwie.config;
+
+import com.bwie.Filter.TokenFilter;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.web.servlet.FilterRegistrationBean;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
+
+import javax.servlet.Filter;
+
+//@Configuration
+public class WebMvcConfig implements WebMvcConfigurer {
+
+ @Autowired
+ private TokenFilter tokenFilter;
+
+
+ /**
+ * 登录过滤器
+ * 如果这个没有配置的话,默认所有的请求都会走filter
+ */
+ @Bean
+ public FilterRegistrationBean loginFilterRegistration(){
+ FilterRegistrationBean registrationBean = new FilterRegistrationBean<>();
+ //设置过滤器
+ registrationBean.setFilter(tokenFilter);
+ registrationBean.setName("loginFilter");
+ //拦截路径,这个就不大好,每次新增接口都得添加新的拦截器
+ registrationBean.addUrlPatterns("/test/get");
+ //指定顺序,数字越小越靠前
+ registrationBean.setOrder(-1);
+ return registrationBean;
+ }
+
+
+
+}
+
diff --git a/src/main/java/com/bwie/controller/LoginController.java b/src/main/java/com/bwie/controller/LoginController.java
new file mode 100644
index 0000000..a9c0359
--- /dev/null
+++ b/src/main/java/com/bwie/controller/LoginController.java
@@ -0,0 +1,33 @@
+package com.bwie.controller;
+
+import com.bwie.config.LoginUserMap;
+import com.bwie.domian.UserInfo;
+import com.bwie.domian.req.LoginReq;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.UUID;
+
+@RestController
+@RequestMapping("/login")
+public class LoginController {
+
+
+ @PostMapping
+ public String login(@RequestBody LoginReq loginReq){
+
+ if (!(loginReq.getUserName().length()>2 && loginReq.getPassword().length()>4)){
+ return "登录失败";
+ }
+ String string = UUID.randomUUID().toString();
+ LoginUserMap.put(string, UserInfo.LoginReqBuild(string,loginReq));
+
+ return string;
+ }
+
+
+ @DeleteMapping
+ public String logout(@RequestHeader("token") String token){
+ LoginUserMap.remove(token);
+ return "退出成功";
+ }
+}
diff --git a/src/main/java/com/bwie/controller/TestController.java b/src/main/java/com/bwie/controller/TestController.java
new file mode 100644
index 0000000..a53d010
--- /dev/null
+++ b/src/main/java/com/bwie/controller/TestController.java
@@ -0,0 +1,18 @@
+package com.bwie.controller;
+
+import lombok.extern.log4j.Log4j2;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@Log4j2
+@RestController
+@RequestMapping("/test")
+public class TestController {
+ @PostMapping
+ public String post(@RequestBody String str){
+ log.info("接收到请求:{}",str);
+ return "请求成功";
+ }
+}
diff --git a/src/main/java/com/bwie/domian/UserInfo.java b/src/main/java/com/bwie/domian/UserInfo.java
new file mode 100644
index 0000000..cf117a8
--- /dev/null
+++ b/src/main/java/com/bwie/domian/UserInfo.java
@@ -0,0 +1,24 @@
+package com.bwie.domian;
+
+import com.bwie.domian.req.LoginReq;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class UserInfo {
+ public String userId;
+ public String userName;
+ private String password;
+
+ public static UserInfo LoginReqBuild(String userId, LoginReq loginReq) {
+ return UserInfo.builder()
+ .userId(userId)
+ .userName(loginReq.getUserName())
+ .password(loginReq.getPassword()).build();
+ }
+}
diff --git a/src/main/java/com/bwie/domian/req/LoginReq.java b/src/main/java/com/bwie/domian/req/LoginReq.java
new file mode 100644
index 0000000..c61aa53
--- /dev/null
+++ b/src/main/java/com/bwie/domian/req/LoginReq.java
@@ -0,0 +1,10 @@
+package com.bwie.domian.req;
+
+import lombok.Data;
+
+@Data
+public class LoginReq {
+
+ private String userName;
+ private String password;
+}
diff --git a/target/classes/com/bwie/App.class b/target/classes/com/bwie/App.class
new file mode 100644
index 0000000..1296009
Binary files /dev/null and b/target/classes/com/bwie/App.class differ
diff --git a/target/classes/com/bwie/Filter/TokenFilter.class b/target/classes/com/bwie/Filter/TokenFilter.class
new file mode 100644
index 0000000..6ada7f6
Binary files /dev/null and b/target/classes/com/bwie/Filter/TokenFilter.class differ
diff --git a/target/classes/com/bwie/config/LoginUserMap.class b/target/classes/com/bwie/config/LoginUserMap.class
new file mode 100644
index 0000000..cd8d487
Binary files /dev/null and b/target/classes/com/bwie/config/LoginUserMap.class differ
diff --git a/target/classes/com/bwie/config/WebMvcConfig.class b/target/classes/com/bwie/config/WebMvcConfig.class
new file mode 100644
index 0000000..27b5852
Binary files /dev/null and b/target/classes/com/bwie/config/WebMvcConfig.class differ
diff --git a/target/classes/com/bwie/controller/LoginController.class b/target/classes/com/bwie/controller/LoginController.class
new file mode 100644
index 0000000..a5778c9
Binary files /dev/null and b/target/classes/com/bwie/controller/LoginController.class differ
diff --git a/target/classes/com/bwie/controller/TestController.class b/target/classes/com/bwie/controller/TestController.class
new file mode 100644
index 0000000..4b7f57f
Binary files /dev/null and b/target/classes/com/bwie/controller/TestController.class differ
diff --git a/target/classes/com/bwie/domian/UserInfo$UserInfoBuilder.class b/target/classes/com/bwie/domian/UserInfo$UserInfoBuilder.class
new file mode 100644
index 0000000..dc7e54c
Binary files /dev/null and b/target/classes/com/bwie/domian/UserInfo$UserInfoBuilder.class differ
diff --git a/target/classes/com/bwie/domian/UserInfo.class b/target/classes/com/bwie/domian/UserInfo.class
new file mode 100644
index 0000000..da04187
Binary files /dev/null and b/target/classes/com/bwie/domian/UserInfo.class differ
diff --git a/target/classes/com/bwie/domian/req/LoginReq.class b/target/classes/com/bwie/domian/req/LoginReq.class
new file mode 100644
index 0000000..7abc37f
Binary files /dev/null and b/target/classes/com/bwie/domian/req/LoginReq.class differ
diff --git a/target/demo11-1.0-SNAPSHOT.jar b/target/demo11-1.0-SNAPSHOT.jar
new file mode 100644
index 0000000..9facfc9
Binary files /dev/null and b/target/demo11-1.0-SNAPSHOT.jar differ
diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties
new file mode 100644
index 0000000..650ce86
--- /dev/null
+++ b/target/maven-archiver/pom.properties
@@ -0,0 +1,3 @@
+artifactId=demo11
+groupId=com.bwie
+version=1.0-SNAPSHOT
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
new file mode 100644
index 0000000..51d8705
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst
@@ -0,0 +1,9 @@
+com\bwie\config\WebMvcConfig.class
+com\bwie\controller\LoginController.class
+com\bwie\domian\UserInfo.class
+com\bwie\Filter\TokenFilter.class
+com\bwie\controller\TestController.class
+com\bwie\domian\req\LoginReq.class
+com\bwie\domian\UserInfo$UserInfoBuilder.class
+com\bwie\config\LoginUserMap.class
+com\bwie\App.class
diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
new file mode 100644
index 0000000..56ed6d6
--- /dev/null
+++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst
@@ -0,0 +1,6 @@
+D:\Project\demo11\src\main\java\com\bwie\config\LoginUserMap.java
+D:\Project\demo11\src\main\java\com\bwie\domian\req\LoginReq.java
+D:\Project\demo11\src\main\java\com\bwie\domian\UserInfo.java
+D:\Project\demo11\src\main\java\com\bwie\controller\LoginController.java
+D:\Project\demo11\src\main\java\com\bwie\controller\TestController.java
+D:\Project\demo11\src\main\java\com\bwie\App.java
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst
new file mode 100644
index 0000000..e69de29
diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst
new file mode 100644
index 0000000..e69de29