как разрешить повторный коммит с сиро? - PullRequest
0 голосов
/ 29 июня 2018

весной я сделал HandlerInterceptor для разрешения повторных коммитов из запросов, когда я пытался интегрировать shiro весной, я обнаружил вопрос: если я использую anon filter для повторного принятия (например, / login), код работает хорошо, но если я использую свой собственный фильтр для обработки запросов, запросы всегда ожидают ...

handlerInterceptor:

public class RepeatSubmitHandler implements HandlerInterceptor {

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
    log.info("preHandler was working....");
  }

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
    log.info("afterCompletion was working...");
  }
}  

shiroConfig:

@Bean("shiroFilter")
public ShiroFilterFactoryBean shirFilter(SecurityManager securityManager) {
    ShiroFilterFactoryBean shiroFilter = new ShiroFilterFactoryBean();
    shiroFilter.setSecurityManager(securityManager);

    Map<String, Filter> filters =  shiroFilter.getFilters();
    filters.put("oauth2", new OAuth2Filter());
    shiroFilter.setFilters(filters);

    Map<String, String> filterMap = new LinkedHashMap<>(); 
    //anon filter, shiro default filter
    filterMap.put("/api/sys/login", "anon"); 
    //custom filter
    filterMap.put("/**", "oauth2"); 
    shiroFilter.setFilterChainDefinitionMap(filterMap);

    return shiroFilter;
}

Контроллер:

@PostMapping("/login")
public RestResponse login(@RequestBody SysLoginVo loginForm) {
    log.info("login was working...");
}

@GetMapping("/nav")
public RestResponse nav() throws InterruptedException {
    log.info("nav was working...");
}

консоль с анонным фильтром для повторного принятия: это моя цель

    preHandler was working....
    login was working...

    preHandler was working....
    preHandler was working....
    preHandler was working....

    afterCompletion was working...

консоль с пользовательским фильтром для повторного принятия:

    preHandler was working....
    nav was working...
    afterCompletion was working...

    preHandler was working....
    nav was working...
    afterCompletion was working...

1 Ответ

0 голосов
/ 30 июня 2018

хорошо, это моя вина, причина не в Широ, только для запроса на получение, для отправки запроса на получение, запрос будет в состоянии ожидания

...