当前位置:网站首页>实现浏览页面时校验用户是否已经完成登录的功能
实现浏览页面时校验用户是否已经完成登录的功能
2022-07-05 20:43:00 【无尽的沉默】
一.实现原理
实现步骤:
1、创建自定义过滤器LoginWebFilter.java
2、在启动类上加入注解@ServletComponentScan,用来扫描web相关的注解
3、完善过滤器的处理逻辑
二.代码实现
首先在main/java/下创建一个filter文件夹用来存储所有过滤器的文件,在此文件夹下创建一个LoginWebFilter.java
接下来在启动类上加入注解@ServletComponentScan,用来扫描web相关的注解
最后 完善过滤器的处理逻辑
过滤器的处理逻辑
LoginWebFilter类
package com.itheima.regiee.filter;
import com.alibaba.fastjson.JSON;
import com.fasterxml.jackson.annotation.JsonAlias;
import com.itheima.regiee.common.R;
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;
/**
* 检测员工是否登录
*/
@WebFilter(filterName = "loginWebFilter",urlPatterns = "/*")
@Slf4j
public class LoginWebFilter implements Filter {
private static AntPathMatcher pathMatcher=new AntPathMatcher(); //uri自动匹配
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request=(HttpServletRequest) servletRequest; //强制转换为Httpservlet
HttpServletResponse response=(HttpServletResponse) servletResponse;
/**
* 1、获取本次请求的URI
* 2、判断本次请求是否需要处理
* 3、如果不需要处理,则直接放行
* 4、判断登录状态,如果已登录,则直接放行
* 5、如果未登录则返回未登录结果
*/
//1、获取本次请求的URl
String requestUrl=request.getRequestURI();
//需要定义放行的请求
String[] uris=new String[]{ //这些请求都需要放行
"/employee/login",
"/employee/logout",
"/backend/**",
"/front/**"
};
//2、判断本次请求是否需要处理
boolean flag=check(uris,requestUrl);
if(flag){ //本次请求直接放行
filterChain.doFilter(request,response);
return; //如果本次请求不拦截,直接不用走后面的代码了
}
//long id = (long)request.getSession().getAttribute("employee");
//4、判断登录状态,如果已登录,则直接放行,这个attribute是记录是否已经登录的
if(request.getSession().getAttribute("employee")!=null){ //说明已经登录了
filterChain.doFilter(request,response);
return;
}
//5、如果未登录则返回未登录结果
//设置返回json格式,可以看到res.data.msg就是返回的输出流
response.getWriter().write(JSON.toJSONString(R.error("NOTLOGIN")));
return;
}
/**
* 路径匹配,如果检验本次请求是否需要放行
* @param uris
* @param requestUrl
* @return
*/
public boolean check(String[] uris,String requestUrl){
for (String s : uris) { //请求的url地址看是否需要放行,其中urlis中的资源都是需要放行的
boolean flag=pathMatcher.match(s,requestUrl);
if(flag){ //匹配上了,说明请求的资源需要放行
return true;
}
}
return false; //说明请求的地址是不能放行的
}
}
R的工具类
package com.itheima.regiee.common;
import lombok.Data;
import java.util.HashMap;
import java.util.Map;
/*
* 通用返回结果,服务端响应的数据最终都会封装成此对象
* */
@Data
public class R<T> {
private Integer code; //编码:1成功,0和其它数字为失败
private String msg; //错误信息
private T data; //数据
private Map map = new HashMap(); //动态数据
public static <T> R<T> success(T object) {
R<T> r = new R<T>();
r.data = object;
r.code = 1;
return r;
}
public static <T> R<T> error(String msg) {
R r = new R();
r.msg = msg;
r.code = 0;
return r;
}
public R<T> add(String key, Object value) {
this.map.put(key, value);
return this;
}
}
前端vue.js
边栏推荐
- 资源道具化
- Make Jar, Not War
- Implementation of redis unique ID generator
- CVPR 2022 | 常见3D损坏和数据增强
- 小程序页面导航
- Schema and model
- 重上吹麻滩——段芝堂创始人翟立冬游记
- Wanglaoji pharmaceutical's public welfare activity of "caring for the most lovely people under the scorching sun" was launched in Nanjing
- Maker education infiltrating the transformation of maker spirit and culture
- Abnova丨培养细胞总 RNA 纯化试剂盒中英文说明书
猜你喜欢
解读协作型机器人的日常应用功能
Analyze the knowledge transfer and sharing spirit of maker Education
Frequent MySQL operations cause table locking problems
1. Strengthen learning basic knowledge points
Introduction to dead letter queue (two consumers, one producer)
Duchefa丨MS培养基含维生素说明书
王老吉药业“关爱烈日下最可爱的人”公益活动在南京启动
Duchefa cytokinin dihydrozeatin (DHZ) instructions
Specification of protein quantitative kit for abbkine BCA method
Abnova丨 MaxPab 小鼠源多克隆抗体解决方案
随机推荐
Use of form text box (II) input filtering (synthetic event)
Abnova DNA marker high quality control test program
Welcome to the game and win rich bonuses: Code Golf Challenge officially launched
Informatics Orsay all in one 1339: [example 3-4] find the post order traversal | Valley p1827 [usaco3.4] American Heritage
产品好不好,谁说了算?Sonar提出分析的性能指标,帮助您轻松判断产品性能及表现
NPDP如何续证?操作指南来了!
Abnova total RNA Purification Kit for cultured cells Chinese and English instructions
Specification of protein quantitative kit for abbkine BCA method
[Yugong series] go teaching course in July 2022 004 go code Notes
National Eye Care Education Conference, 2022 the Fourth Beijing International Youth eye health industry exhibition
Duchefa丨D5124 MD5A 培养基中英文说明书
Sort and projection
The Chinese Academy of Management Sciences gathered industry experts, and Fu Qiang won the title of "top ten youth" of think tank experts
Mongodb/ document operation
Popular science | does poor English affect the NPDP exam?
科普|英语不好对NPDP考试有影响吗 ?
当Steam教育进入个性化信息技术课程
Mongodb basic exercises
挖财商学院给的证券账户安全吗?可以开户吗?
Dry goods navigation in this quarter | Q2 2022