springboot shiro与uriwrite过滤器顺序冲突问题

木来 木来

我做了一个项目,springboot整合了shiro与urlwrite以及mybatis等等。

但是我遇到一个问题,就是我在urlwrite过滤器中写了一些规则,但是访问这些规则,我发现获取不到shiro的用户信息,全部为null。

这就让我很难受,于是经过思考,想了一下为什么以前的ssm框架项目没有出现这种原因,我考虑到可能是因为shiro过滤器与urlwrite过滤器的顺序执行问题。

因为在以前的ssm项目中,我把shiro过滤器放到了web.xml中的最前面,所以,我现在要解决的问题是把shiro的过滤放在首位。

这个我的解决方案是,在我自定义的shiroConfig中,下面是我的shiro过滤器方法头

//shiro框架过滤器   
 @Bean("shiroFilter")
    public ShiroFilterFactoryBean shiroFilter(SecurityManager securityManager) {
        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();
        //注入安全管理器        shiroFilterFactoryBean.setSecurityManager(securityManager());
        //设置过滤集合

然后,我在最下面写一个方法,这个方法的目的就是让shiro过滤器先执行。


@Beanpublic FilterRegistrationBean delegatingFilterProxy() {
    FilterRegistrationBean registration = new FilterRegistrationBean();
    DelegatingFilterProxy proxy=new DelegatingFilterProxy();
    proxy.setTargetFilterLifecycle(true);
    proxy.setTargetBeanName("shiroFilter");
    registration.setFilter(proxy);
    return registration;
}

这样就解决了我的问题。

0 条评论