针对特定控制器的自定义网页过滤器

JVi*_*Vic 4 controller filter spring-boot

请帮助我,或展示其他方法来解决此问题。

@RestController
@RequestMapping("/users")
public class UserController {

    @RequestMapping("/login")
    public String logIn() {
        return "";
    }

    @RequestMapping("/getUserData")
    @FilterThisRequest
    public String getUserData(@PathVariable Long userId) {
        return user;
    }
}
Run Code Online (Sandbox Code Playgroud)

我有AuthFilter extends GenericFilterBean一个特定的逻辑。如何使过滤器仅在具有 的方法之前执行@FilterThisRequest?或者有更好的做法来解决这个问题?

gar*_*tiz 5

检查 FilterRegistrationBean 参考指南https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-embedded-container-servlets-filters-listeners-beans

通过 @Configuration 类使 FilterRegistrationBean 对 Spring 可用,下面的示例将确保 authFilter 仅针对 /getUserData 运行。请注意,它是基于 URL(而非方法)的过滤。

@Autowired AuthFilter authfilter;
....
....
@Bean
public FilterRegistrationBean authFilterRegistration() {
    FilterRegistrationBean registration = new FilterRegistrationBean(authfilter);
    registration.addUrlPatterns("/web-app-name/getUserData/");
    return registration;
}
Run Code Online (Sandbox Code Playgroud)