SpringCloud之Zuul过滤器实现登录鉴权实战(十一)
2024-09-01 11:53:45
自定义zuul过滤器实现登录鉴权实战
1、新建filter包 2、新建类继承ZuulFilter,重写方法 3、在类顶部加注解@Comment让spring扫描
/**
* @author WGR
* @create 2019/10/20 -- 21:19
*/
/**
* 登录过滤器
*/
@Component
public class LoginFilter extends ZuulFilter {
/**
* 过滤器类型,前置过滤器
* @return
*/
@Override
public String filterType() {
return "pre";
}
/**
* 过滤器顺序,越小越先执行
* @return
*/
@Override
public int filterOrder() {
return 4;
}
/**
* 过滤器是否生效
* @return
*/
@Override
public boolean shouldFilter() {
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
//System.out.println(request.getRequestURI()); ///apigateway/product/api/v1/product/list
//System.out.println(request.getRequestURL()); //http://localhost:9000/apigateway/product/api/v1/product/list
//ACL
if ("/apigateway/api/v1/order/save".equalsIgnoreCase(request.getRequestURI())){
return true;
}else if ("/apigateway/order/api/v1/order/list".equalsIgnoreCase(request.getRequestURI())){
return true;
}else if ("/apigateway/order/api/v1/order/find".equalsIgnoreCase(request.getRequestURI())){
return true;
}
return false;
}
/**
* 业务逻辑
* @return
* @throws ZuulException
*/
@Override
public Object run() throws ZuulException {
//JWT
RequestContext requestContext = RequestContext.getCurrentContext();
HttpServletRequest request = requestContext.getRequest();
//token对象
String token = request.getHeader("token");
if(StringUtils.isBlank((token))){
token = request.getParameter("token");
}
//登录校验逻辑 根据公司情况自定义 JWT
if (StringUtils.isBlank(token)) {
requestContext.setSendZuulResponse(false);
requestContext.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());
}
return null;
}
}
测试:
不带token
带token
最新文章
- dpkg用法详解
- JBOSS通过Apache负载均衡方法一:使用mod_jk
- LINUX下的时间与时区的设置
- LeetCode 342
- linux下python导出sybase 数据库 表记录的方式
- JAVA List与数组间相互转换
- C#数组的使用
- 运维之Linux基础(二)
- ubuntu设置IP地址&;修改vi模式键盘上下键错位
- DotNetBar 控件设置空内容时显示内容
- spark0.8.0安装与学习
- 8 python time$datetime
- Day 2 Python 基础数据类型
- mysql如何查找某字段所在表
- Mysql 常用工具
- mysql常用日期、时间查询
- JQuery资源网站(收藏)
- rpmdb: Thread/process 9180/139855524558592 failed: Thread died in Berkeley DB library
- Codeforces Round #245 (Div. 2) B. Balls Game 并查集
- php格式化时间戳显示友好的时间