添加目录的完成

main
@t2652009480 2 years ago
parent 0c564c6066
commit fdef4e5429

@ -22,6 +22,12 @@
<artifactId>spring-boot-starter-web</artifactId> <artifactId>spring-boot-starter-web</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.76</version>
</dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId> <artifactId>lombok</artifactId>

@ -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;
}
}

@ -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;
}
}

@ -86,7 +86,7 @@ public class TextualServiceImpl extends ServiceImpl<TextualMapper, Textual> impl
Textual textual = convertUtil.VoToEntity(textualVo, Textual.class); Textual textual = convertUtil.VoToEntity(textualVo, Textual.class);
//根据目录名称查询目录id //根据目录名称查询目录id
QueryWrapper<Directory> qwd=new QueryWrapper<>(); QueryWrapper<Directory> 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); Directory directory = directoryMapper.selectOne(qwd);
//将目录id封装到实体类 //将目录id封装到实体类
textual.setDirId(directory.getId()); textual.setDirId(directory.getId());

@ -23,6 +23,7 @@ import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSession;
import java.io.IOException; import java.io.IOException;
import java.util.UUID;
@RestController @RestController
@RequestMapping("/user") @RequestMapping("/user")
@ -37,9 +38,17 @@ public class UserController {
} }
User login = userService.login(username, password); User login = userService.login(username, password);
if (login != null) { if (login != null) {
String token = UUID.randomUUID()+"";
request.getSession().setAttribute("USER", login); request.getSession().setAttribute("USER", login);
return JsonResult.success(ResultCode.SUCCESS); return JsonResult.success(token);
} }
return JsonResult.error(ResultCode.USER_ACCOUNT_ERROR, "账号或密码错误"); return JsonResult.error(ResultCode.USER_ACCOUNT_ERROR, "账号或密码错误");
} }
@PostMapping("/logout")
public JsonResult<String> loginOut(HttpServletRequest request){
// 去除session
request.getSession().removeAttribute("USER");
return JsonResult.success("退出成功");
}
} }

@ -4,11 +4,11 @@ public enum ResultCode {
SUCCESS("200", "成功"), SUCCESS("200", "成功"),
Fail("500","失败"), Fail("500","失败"),
ERROR("-1", "NOTLOGIN"), ERROR("1", "NOTLOGIN"),
PARAM_ERROR("1001", "参数异常"), PARAM_ERROR("1001", "参数异常"),
USER_EXIST_ERROR("2001", "用户已存在"), USER_EXIST_ERROR("2001", "用户已存在"),
USER_ACCOUNT_ERROR("2002", "账号或密码错误"), USER_ACCOUNT_ERROR("2002", "账号或密码错误"),
USER_NOT_EXIST_ERROR("2003", "未找到用户"), USER_NOT_EXIST_ERROR("2003", "请先登录"),
NO_NULL_ERROR("3001", "账号或密码不能为空"), NO_NULL_ERROR("3001", "账号或密码不能为空"),
PARAM_LOST_ERROR("2004", "参数缺失"), PARAM_LOST_ERROR("2004", "参数缺失"),
PARAM_PASSWORD_ERROR("2005", "原密码输入错误"), PARAM_PASSWORD_ERROR("2005", "原密码输入错误"),

@ -19,7 +19,7 @@ spring:
druid: druid:
url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai url: jdbc:mysql://localhost:3306/zhiyun?useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai
username: root username: root
password: root password: 123456
thymeleaf: thymeleaf:
cache: false cache: false
prefix: classpath:/templates prefix: classpath:/templates

@ -17,9 +17,7 @@
tester tester
</a> </a>
<dl class="layui-nav-child"> <dl class="layui-nav-child">
<dd><a href="">Your Profile</a></dd> <dd><a href="login.html" onclick="logout()">退出</a></dd>
<dd><a href="">Settings</a></dd>
<dd><a href="lgoin.html">Sign out</a></dd>
</dl> </dl>
</li> </li>
<li class="layui-nav-item" lay-header-event="menuRight" lay-unselect> <li class="layui-nav-item" lay-header-event="menuRight" lay-unselect>

@ -53,22 +53,19 @@
type:"post", type:"post",
success:function(result){ success:function(result){
console.log(result); console.log(result);
if (result.msg==='success'){ if (result.data!=null && result.data!= ''){
layer.msg(result.tip,{icon:1,time:100},function () { 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" 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 { }else {
layer.msg('未知异常,请联系管理员') layer.msg(result.msg)
// location.href="http://localhost:63342/zhiyun/src/main/resources/templates/layui-v2.6.8/login.html"
} }
}, },
}) })
}); });
}); });
</script> </script>

Loading…
Cancel
Save