Zuul学习(一)——登陆鉴权

编程

1.项目模块图

2.首先得有一个eureka的服务,所有的服务都是注册到eureka上的

3.在pom.xml中引入zuul相关的依赖

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-netflix-zuul</artifactId>

</dependency>

4.编写application.yml,这里先配置user模块的路由地址

spring:

application:

name: zuul

# 服务端口号

server:

port: 9050

#Eureka 相关配置

eureka:

client:

service-url:

defaultZone: http://localhost:9000/eureka/

# 构建路由地址

zuul:

routes:

# 这里可以自定义

user: /api/user/**

5.在启动类添加相应的注解

@SpringBootApplication

@EnableZuulProxy

@EnableEurekaClient

public class ZuulApplication {

public static void main(String[] args) {

SpringApplication.run(ZuulApplication.class, args);

}

}

6.编写过滤器

@Component

public class AccessFilter extends ZuulFilter {

@Override

public String filterType() {

return "pre";

}

@Override

public int filterOrder() {

return -1;

}

@Override

public boolean shouldFilter() {

return true;

}

@Override

public Object run() throws ZuulException {

// 获取请求上下文

RequestContext rc = RequestContext.getCurrentContext();

HttpServletRequest request = rc.getRequest();

// 获取表单中的 token

String token = request.getParameter("token");

// 业务逻辑处理

if (null == token) {

// 请求结束,不在继续向下请求。

rc.setSendZuulResponse(false);

// 响应状态码,HTTP 401 错误代表用户没有访问权限

rc.setResponseStatusCode(HttpStatus.UNAUTHORIZED.value());

// 响应类型

rc.getResponse().setContentType("application/json; charset=utf-8");

try (PrintWriter writer = rc.getResponse().getWriter()) {

writer.print(JSON.toJSONString(new Result(401, "未携带token")));

} catch (IOException e) {

e.printStackTrace();

}

}

//TODO 通过token查询用户的信息,用户不存在也返回错误信息

return null;

}

}

以上是 Zuul学习(一)——登陆鉴权 的全部内容, 来源链接: utcz.com/z/518666.html

回到顶部