吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 891|回复: 3
收起左侧

[已解决] 【求助】使用springboot分离开发,有拦截器,如何释放static的静态资源

[复制链接]
关谷神奇 发表于 2021-6-21 11:31
本帖最后由 关谷神奇 于 2021-6-22 16:31 编辑

使用springboot进行开发时,应该如何释放静态页面,以下是我拦截器的配置,用于拦截登录状态,我将html文件放入static包里面之后,依然会被拦截掉,请教如何配置。
        
        




package com.zm.crmserver.controller;
import com.zm.crmserver.annotation.Auth;
import com.zm.crmserver.pojo.User;
import com.zm.crmserver.util.JWTUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.method.HandlerMethod;
import org.springframework.web.servlet.HandlerInterceptor;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.lang.annotation.Annotation;
import java.lang.reflect.Method;

//拦截器
@Component
public class AuthIntercepter implements HandlerInterceptor {
    @Autowired
    JWTUtil jwtUtil;

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        //拦截器跨域配置方式2
        if("OPTIONS".equals(request.getMethod().toUpperCase())) {
            //System.out.println("Method:OPTIONS");
            return true;
        }

        if (!request.getMethod().equalsIgnoreCase("GET") && !request.getMethod().equalsIgnoreCase("POST")) {
            return true;
        }
        String token = request.getHeader("token");

        boolean valid = jwtUtil.isValid(token);
        if (valid) {
            User user = jwtUtil.get(token);
            if (user!=null) {
                Method method = ((HandlerMethod) handler).getMethod();
                Integer u_id = user.getU_id();
                //request.setAttribute("u_id",u_id);
                request.setAttribute("user",user);
                if(method.isAnnotationPresent(Auth.class)){//判断是否有@auth注解
                    //获取注解对象
                    Auth auth = method.getAnnotation(Auth.class);
                    //
                    String value = auth.value();//获取注解中的值
                    if (value.contains(user.getR_id()+"")) {//判断注解中值是否包含rid
                        return true;
                    }
                }else {

                    return true;
                }

            }

        }
        //响应一个json格式对象
        response.setContentType("application/json;charset=utf-8");
        String str = "{\"msg\":\"nopermission\"}";

        response.getWriter().write(str);//响应数据

        return false;
    }
}

package com.zm.crmserver.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
//添加拦截器 拦截器
@Configuration
public class WebMvcConfig extends WebMvcConfigurationSupport {
    @Autowired
    AuthIntercepter authIntercepter;

        /**
        *我尝试在下面代码里面进行释放,依然不行,
        */
    @Override
    protected void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(authIntercepter).addPathPatterns("/**").excludePathPatterns("/login");
    }
        //下面这段代码网上搜索的
    @Override
    protected void addResourceHandlers(ResourceHandlerRegistry registry) {

        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
                        }
        }

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

javazjl 发表于 2021-6-21 11:55
在application.yml加上以下代码试试?
[Asm] 纯文本查看 复制代码
spring:
  resources:
    static-locations: classpath:/static/


或者是这样
[Java] 纯文本查看 复制代码
@Override
    protected void addInterceptors(InterceptorRegistry registry) {

        registry.addInterceptor(authIntercepter).addPathPatterns("/**").excludePathPatterns("/login","/static/**");
    }
nstar1221 发表于 2021-6-21 13:23
本帖最后由 nstar1221 于 2021-6-21 13:24 编辑

[Java] 纯文本查看 复制代码
@Configuration
public class WebConfig{
    @Bean
    public WebMvcConfigurer webMvcConfigurer(){
        return new WebMvcConfigurer() {
            @Override
            public void addInterceptors(InterceptorRegistry registry) {
                registry.addInterceptor(new MyInterceptor())
                    .addPathPatterns("/**")
                    .excludePathPatterns("/","/login","/css/**","/fonts","/js/**","/image/**");
            }
        };
    }
}
Zerolal 发表于 2021-6-21 15:35
在你的拦截器里面添加@RestControllerAdvice 注解.指定拦截的包.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 警告:本版块禁止回复与主题无关非技术内容,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-5 05:47

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表