NutzCN Logo
问答 NutzBoot 如何配置全局过滤器?
发布于 29天前 作者 KerwinChen 137 次浏览 复制 上一个帖子 下一个帖子
标签:

编写一个继承了 Filter 的过滤器

public class PrivateFilter implements Filter 
    @Override
    public void doFilter(ServletRequest req, ServletResponse res,  FilterChain chain) throws IOException, ServletException {
        ......
    }

    @Override
    public void init(FilterConfig arg0) throws ServletException {
    }

    @Override
    public void destroy() {
    }
}

然后再根据这个过滤器实现一个继承了 WebFilterFace 的 PrivateFilterStarter。
请问我的思路这样是正确的吗?

13 回复

正确,记得加上@IocBean

@wendal 我现在遇到个问题,我用了 ShiroSessionProvider 之后,登录的时候将登录用户存在 session 中

req.getSession().setAttribute("me", user);

在普通 module 中可以获取到这个 me 的内容。
但是在我自定义的全局过滤器中,却获取不到。
我考虑是否是因为过滤器优先级的问题?

starter-shiro已经自动带上了,不需要再配的,启用一下配置就行

在ShiroFilter之后的Filter用的是shiro session,在它之前的是容器的session

刚刚查看了下源码,ShiroFilterStarter 的 order 是30,将自定义的 starter 的 order 改为31就能获取到 shiro session 的内容了。。

PS:我明白在ShiroFilter之后的Filter用的是shiro session,在它之前的是容器的session,那怎么做到在登录的方法中分别放入不同的 session 中呢?

@wendal 在 starter 里面配置了

public Map<String, String> getInitParameters() {
        HashMap<String, String> params = new HashMap<>();
        params.put("exclusions", "*.js,*.gif,*.jpg,*.png,*.css,/rs/*");
        return params;
    }

但是静态资源文件的请求还是会进入到 filter 里面。这是哪边还需要配置吗?

哪个静态文件? 具体URL是什么?

@wendal 就是页面引用的 rs/ 里面的 css、js、图片文件

等等,你指什么filter?

自定义的filter?

那你得按NutFilter等实现类的方式自行过滤,servlet api里面并无这个功能,都是filter内实现的

@wendal 原来如此。那我知道了,谢谢大佬

添加回复
请先登陆
回到顶部