diff --git a/pom.xml b/pom.xml
index 696d351..42172eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,6 +22,12 @@
spring-boot-starter-web
+
+ com.alibaba
+ fastjson
+ 1.2.76
+
+
org.projectlombok
lombok
diff --git a/src/main/java/com/zhiyun/zhiyun03/filter/LoginCheckFilter.java b/src/main/java/com/zhiyun/zhiyun03/filter/LoginCheckFilter.java
new file mode 100644
index 0000000..8bcdcee
--- /dev/null
+++ b/src/main/java/com/zhiyun/zhiyun03/filter/LoginCheckFilter.java
@@ -0,0 +1,79 @@
+package com.zhiyun.zhiyun03.filter;
+
+import com.alibaba.fastjson2.JSON;
+import com.zhiyun.zhiyun03.utils.common.JsonResult;
+import com.zhiyun.zhiyun03.utils.common.ResultCode;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.util.AntPathMatcher;
+
+import javax.servlet.*;
+import javax.servlet.annotation.WebFilter;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.io.IOException;
+
+/**
+ * @description: 检查用户是否已经完成登录
+ * @author: Jie
+ * @date: 2022/8/10 9:48
+ **/
+@WebFilter(filterName = "LoginCheckFilter", urlPatterns = "/*")
+@Slf4j
+public class LoginCheckFilter implements Filter {
+
+ /**
+ * 路径匹配器,支持通配符
+ */
+ public static final AntPathMatcher PATH_MATCHER = new AntPathMatcher();
+
+ @Override
+ public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
+ HttpServletRequest request = (HttpServletRequest) servletRequest;
+ HttpServletResponse response = (HttpServletResponse) servletResponse;
+ String requestURI = request.getRequestURI();
+ log.info("拦截到请求,{}", requestURI);
+
+ //2、判断本次请求是否需要处理
+ //定义不需要处理的请求路径
+ String[] urls = new String[]{
+ "/user/login",
+ "/user/logout",
+ "/layui/**",
+ "/front/**"
+ };
+ boolean check = check(urls, requestURI);
+
+ //3、如果不需要处理,则直接放行
+ if (check) {
+ log.info("本次请求{}不需要处理", requestURI);
+ filterChain.doFilter(request, response);
+ return;
+ }
+
+ //取出token
+ String token = request.getHeader("token");
+ //第一次登录没有token,给null会报错,所以我们判断一下token是否为空,为空给一个空串
+ //三元运算
+ token = token==null?"":token;
+ //4、判断登录状态,如果已登录,则直接放行
+ if (token!= null) {
+// log.info("用户已登录,用户id为:{}", request.getSession().getAttribute("USER"));
+ filterChain.doFilter(request, response);
+ return;
+ }
+ log.info("用户未登录");
+ //5、如果未登录则返回未登录结果,通过输出流方式向客户端页面响应数据
+ response.getWriter().write(JSON.toJSONString(JsonResult.error(ResultCode.ERROR,"用户未登录")));
+ return;
+ }
+
+ public boolean check(String[] urls, String requestURI) {
+ for (String url : urls) {
+ boolean match = PATH_MATCHER.match(url, requestURI);
+ if (match) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/com/zhiyun/zhiyun03/filter/LoginFilter.java b/src/main/java/com/zhiyun/zhiyun03/filter/LoginFilter.java
deleted file mode 100644
index 24f4a98..0000000
--- a/src/main/java/com/zhiyun/zhiyun03/filter/LoginFilter.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.zhiyun.zhiyun03.filter;
-
-import javax.servlet.*;
-import javax.servlet.annotation.WebFilter;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-//@WebFilter(urlPatterns = "*")//表示所有请求都走这个过滤器(可以用来设置编码)
-public class LoginFilter implements Filter {
- @Override
- public void init(FilterConfig filterConfig) throws ServletException {
- //服务器启动时执行init方法
- }
-
- @Override//有请求就执行,且无论是前端到后端还是后端到前端都会走过滤器,真的很形象(就像量有滤网的水杯,装水和倒水都会经过滤网,前提是你有滤网(过滤器))
- public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
- //filter是抽象类,所以要强转
- HttpServletRequest request = (HttpServletRequest) servletRequest;
- HttpServletResponse response = (HttpServletResponse) servletResponse;
- //统一资源标识符(Uniform Resource Identifier)得到一个uri
- //URI和URL都定义了资源是什么,但URL还定义了该如何访问资源。URL是一种具体的URI,它是URI的一个子集,它不仅唯一标识资源,而且还提供了定位该资源的信息。URI 是一种语义上的抽象概念,可以是绝对的,也可以是相对的,而URL则必须提供足够的信息来定位,是绝对的。
- //只要能唯一标识资源的就是URI,在URI的基础上给出其资源的访问方式的就是URL
- String requestURI = request.getRequestURI();
- System.out.println("requestURI=" + requestURI);
- //这个user得先存才能取(作用范围是session,也就是其存值时是存于session中的)
- Object user = request.getSession().getAttribute("USER");
- System.out.println(user);//只是打印在控制台,为了测试
- if (ignore(requestURI) || user != null)//满足其一就让其通过
- filterChain.doFilter(request, response);
- else
- response.sendRedirect("/login.html");//重定向到login.jsp页面
- }
-
- private boolean ignore(String requestURI) {
- //login请求 和 login.jsp页面 要让行,不然永远无法登录
- String[] uris = {"login", "login.html"};
- for (String u : uris) {
- if (requestURI.endsWith(u))
- //只能用上面的方式,不然会一直输出下面两行
- // requestURI=/login.jsp
- //null
- //if (u.endsWith(requestURI))
- return true;
- }
- return false;
- }
-}
-
-
\ No newline at end of file
diff --git a/src/main/java/com/zhiyun/zhiyun03/textual/service/impl/TextualServiceImpl.java b/src/main/java/com/zhiyun/zhiyun03/textual/service/impl/TextualServiceImpl.java
index e33abaf..3e81ab8 100644
--- a/src/main/java/com/zhiyun/zhiyun03/textual/service/impl/TextualServiceImpl.java
+++ b/src/main/java/com/zhiyun/zhiyun03/textual/service/impl/TextualServiceImpl.java
@@ -86,7 +86,7 @@ public class TextualServiceImpl extends ServiceImpl impl
Textual textual = convertUtil.VoToEntity(textualVo, Textual.class);
//根据目录名称查询目录id
QueryWrapper qwd=new QueryWrapper<>();
- qwd.lambda().eq(Directory::getDirName,textualVo.getDirName());
+ qwd.lambda().eq(Directory::getDirName,textualVo.getDirName()).eq(Directory::getDirIden,4);
Directory directory = directoryMapper.selectOne(qwd);
//将目录id封装到实体类
textual.setDirId(directory.getId());
diff --git a/src/main/java/com/zhiyun/zhiyun03/user/controller/UserController.java b/src/main/java/com/zhiyun/zhiyun03/user/controller/UserController.java
index 4ca7e31..58569d1 100644
--- a/src/main/java/com/zhiyun/zhiyun03/user/controller/UserController.java
+++ b/src/main/java/com/zhiyun/zhiyun03/user/controller/UserController.java
@@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
+import java.util.UUID;
@RestController
@RequestMapping("/user")
@@ -37,9 +38,17 @@ public class UserController {
}
User login = userService.login(username, password);
if (login != null) {
+ String token = UUID.randomUUID()+"";
request.getSession().setAttribute("USER", login);
- return JsonResult.success(ResultCode.SUCCESS);
+ return JsonResult.success(token);
}
return JsonResult.error(ResultCode.USER_ACCOUNT_ERROR, "账号或密码错误");
}
+
+ @PostMapping("/logout")
+ public JsonResult loginOut(HttpServletRequest request){
+ // 去除session
+ request.getSession().removeAttribute("USER");
+ return JsonResult.success("退出成功");
+ }
}
diff --git a/src/main/java/com/zhiyun/zhiyun03/utils/common/ResultCode.java b/src/main/java/com/zhiyun/zhiyun03/utils/common/ResultCode.java
index 3253cea..4c4f8c8 100644
--- a/src/main/java/com/zhiyun/zhiyun03/utils/common/ResultCode.java
+++ b/src/main/java/com/zhiyun/zhiyun03/utils/common/ResultCode.java
@@ -4,11 +4,11 @@ public enum ResultCode {
SUCCESS("200", "成功"),
Fail("500","失败"),
- ERROR("-1", "NOTLOGIN"),
+ ERROR("1", "NOTLOGIN"),
PARAM_ERROR("1001", "参数异常"),
USER_EXIST_ERROR("2001", "用户已存在"),
USER_ACCOUNT_ERROR("2002", "账号或密码错误"),
- USER_NOT_EXIST_ERROR("2003", "未找到用户"),
+ USER_NOT_EXIST_ERROR("2003", "请先登录"),
NO_NULL_ERROR("3001", "账号或密码不能为空"),
PARAM_LOST_ERROR("2004", "参数缺失"),
PARAM_PASSWORD_ERROR("2005", "原密码输入错误"),
diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml
index 8f27ab5..0befe0c 100644
--- a/src/main/resources/application.yml
+++ b/src/main/resources/application.yml
@@ -19,7 +19,7 @@ spring:
druid:
url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root
- password: root
+ password: 123456
thymeleaf:
cache: false
prefix: classpath:/templates
diff --git a/src/main/resources/templates/layui-v2.6.8/index.html b/src/main/resources/templates/layui-v2.6.8/index.html
index 4f275bd..6c6eb1b 100644
--- a/src/main/resources/templates/layui-v2.6.8/index.html
+++ b/src/main/resources/templates/layui-v2.6.8/index.html
@@ -17,9 +17,7 @@
tester
- - Your Profile
- - Settings
- - Sign out
+ - 退出
diff --git a/src/main/resources/templates/layui-v2.6.8/login.html b/src/main/resources/templates/layui-v2.6.8/login.html
index 4a66899..fbfc471 100644
--- a/src/main/resources/templates/layui-v2.6.8/login.html
+++ b/src/main/resources/templates/layui-v2.6.8/login.html
@@ -53,22 +53,19 @@
type:"post",
success:function(result){
console.log(result);
- if (result.msg==='success'){
+ if (result.data!=null && result.data!= ''){
layer.msg(result.tip,{icon:1,time:100},function () {
+ localStorage.token=result.data;
location.href="http://localhost:63342/zhiyun/src/main/resources/templates/layui-v2.6.8/index.html"
})
- }else if (result.type==='error'){
- layer.msg(result.tip)
}else {
- layer.msg('未知异常,请联系管理员')
+ layer.msg(result.msg)
+ // location.href="http://localhost:63342/zhiyun/src/main/resources/templates/layui-v2.6.8/login.html"
}
},
})
});
-
-
-
});