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