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.编写过滤器
@Componentpublic 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