Swagger实现登录查看Api

1、登录页面添加Cookie

工具:js-cookie

 Cookies.set('token', data.data.token.token);
复制代码

2、后端添加过滤器

package filter;

import cn.hutool.core.util.ArrayUtil;
import cn.util.FilterUtil;
import cn.util.jwt.JwtAuthUtils;

import javax.servlet.*;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class RequestAuthFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest httpRequest = (HttpServletRequest) request;

        if (FilterUtil.cancelFilter(httpRequest)) {
            filterChain.doFilter(request, response);
        } else {
            // 开始进入请求地址拦截
            boolean flag = false;
            Cookie[] cookies = httpRequest.getCookies();
            if (ArrayUtil.isNotEmpty(cookies)) {
                for (Cookie cookie : cookies) {
                    String name = cookie.getName();
                    // 可在此处作Token校验
                    if ("token".equals(name)) {
                        try {
                            flag = true;
                            JwtAuthUtils.parserJwt(cookie.getValue());
                        } catch (Exception e) {
                            flag = false;
                        }
                    }
                }
            }

            if (flag) {
                filterChain.doFilter(request, response);
            } else {
                HttpServletResponse httpResponse = (HttpServletResponse) response;
                String fullUrl = httpRequest.getContextPath() + "/user/login";
                httpResponse.sendRedirect(fullUrl);
            }
        }
    }
}
复制代码

3、注册过滤器

@Bean
public FilterRegistrationBean FilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean();

    registration.setDispatcherTypes(DispatcherType.REQUEST);
    // 注入过滤器
    registration.setFilter(new RequestAuthFilter());
    // 过滤器名称
    registration.setName("RequestAuthFilter");
    // 拦截规则
    List paths = Lists.newArrayList();
    paths.add("/");
    paths.add("/v2/*");
    paths.add("/swagger-ui.html");
    paths.add("/swagger-resources");
    paths.add("/swagger-resources/configuration/ui");
    registration.setUrlPatterns(paths);
    // 是否自动注册 false 取消Filter的自动注册
    registration.setEnabled(true);
    // 过滤器顺序
    registration.setOrder(Integer.MAX_VALUE - 2);

    return registration;
}
复制代码

你可能感兴趣的:(Swagger实现登录查看Api)