435656923 435656923
关注数: 22 粉丝数: 16 发帖数: 527 关注贴吧数: 16
Gateway整合security + jwt 问题 搞了个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); } } 没有拦截的可以正常路由,需要验证的怎么都不行,来大佬帮忙看看
Gateway整合security + jwt 问题 搞了个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); } } 没有拦截的可以正常路由,需要验证的怎么都不行,来大佬帮忙看看
1 下一页