最近做的项目中,计划使用Spring Security做权限控制,但以前大多项目都是采用spring拦截器来实现。在Spring MVC的项目中使用Spring 拦截器做权限控制,一般会有两类拦截器:一个登录拦截器和多个权限验证拦截器。
登录拦截器:所有的请求,验证用户是否登录,以及用户名密码是否正确。
多个权限验证拦截器:不同的链接规则使用不的拦截器进行拦截,并进行权限验证。
Spring的拦截器实现有两种方式:
第一种方式:自定义Interceptor类要实现Spring 的HandlerInterceptor 接口,
第二种方式是实现Spring的WebRequestInterceptor接口。
Spring拦截器和过滤器Filter的区别:
Spring拦截器 | 过滤器Filter |
---|---|
基于反射机制 | 基于函数回调 |
不依赖于servlet容器 | 依赖于servlet容器 |
拦截器能够深入到方法前后、异常抛出前后等,因此拦截器的使用具有更大的弹性 | 只在Servlet前后起作用 |
在action的生命周期中,拦截器可以多次被调用 | 过滤器只能在容器初始化时被调用一次 |
拦截器可以获取IOC容器中的各个bean 拦截器里注入一个service,可以调用业务逻辑更加灵活 |