Gateway整合security + jwt 问题
spring吧
全部回复
仅看楼主
level 1
435656923 楼主
搞了个cloud的项目使用Gateway作为网关
想整合security做访问权限控制,但是项目原本是用jwt 做验证的
在百度和googel了好久只能将Gateway 和 security整合起来,但是怎么都整合不了jwt
问题卡在security拦截之后怎么把用户鉴权信息给到security这里
下面是拦截器,已经添加到security配置中
@Component
public class AuthFilter implements WebFilter {
@Autowired
TokenSign tokenSign;
// 解析token并生成UsernamePasswordAuthenticationToken
private UsernamePasswordAuthenticationToken getAuthentication(String token) {
BaUserpc user = tokenSign.verify(token);
if (user != null) {
Integer userid = user.getAutoid();
String openid = user.getOpenid();
String role = "ROLE_" + user.getRoleid();
if (userid != null) {
return new UsernamePasswordAuthenticationToken(openid, null,
Collections.singleton(new SimpleGrantedAuthority(role))
);
}
}
return null;
}
@Override
public Mono<Void> filter(ServerWebExchange exchange, WebFilterChain chain) {
//这里已经进得来了 token解析也成功了
System.out.println("--------------------------");
ServerHttpRequest request = exchange.getRequest();
HttpHeaders header = request.getHeaders();
//获取token
String tokenHeader = header.getFirst("token");
// 如果请求头中有token,则进行解析,并且设置认证信息
SecurityContextHolder.getContext().setAuthentication(getAuthentication(tokenHeader));
return chain.filter(exchange);
}
}
没有拦截的可以正常路由,需要验证的怎么都不行,来大佬帮忙看看
2019年11月25日 01点11分 1
level 6
楼主是在自学吗,我在自学遇到很多困难,打算找个靠谱机构系统学习一下呢,听说动力节点在深圳开了个分校区,杜老师亲自授课要不要一起去看看呀。
2019年12月19日 06点12分 2
1