• 2017.2.12 开涛shiro教程-第八章-拦截器机制


    原博客地址:http://jinnianshilongnian.iteye.com/blog/2018398

    根据下载的pdf学习。

    1.拦截器介绍

    下图是shiro拦截器的基础类图:

    1.NameableFilter

    NameableFilter给Filter起个名字,如果没有设置,默认就是FilterName。比如之前的authc,当组装拦截器链的时候会根据这个名字找到相应的拦截器实例。

    2.OncePerRequestFilter

    OncePerRequestFilter用于防止多次执行Filter,即一次请求只会走一次拦截器链。另外提供enabled属性,enabled=true表示开启该拦截器,enable=false表示关闭该拦截器。

    3.ShiroFilter

    ShiroFilter整个shiro的入口。

    4.AdviceFilter

    AdviceFilter提供了很多AOP风格的支持,类似于SpringMVC中的Interceptor。

    1 boolean preHandle(ServletRequest request, ServletResponse response) throws Exception
    2 void postHandle(ServletRequest request, ServletResponse response) throws Exception
    3 void afterCompletion(ServletRequest request, ServletResponse response, Exception exception) throws Exception;

    (1)preHandler

    preHandler 类似于AOP的前置增强。在拦截器链执行前执行。返回true则继续拦截器链,否则中断后续的拦截器链。用于预处理,如基于表单的身份验证、授权。

    (2)postHandler

    postHandler 类似于AOP的后置返回增强。在拦截器链执行完成后执行。用于后处理,如记录执行时间等。

    (3)afterCompletion

    afterCompletion类似于AOP的后置最终增强,即不管有没有异常都会执行的部分。用于进行一些比如清理资源(Subject与线程的绑定等)的操作。

    5.PathMatchingFilter

    PathMatchingFilter 用于提供基于Ant 风格的请求路径匹配,及拦截器参数解析等功能。

    1 boolean pathsMatch(String path, ServletRequest request)
    2 boolean onPreHandle(ServletRequest request, ServletResponse response, Object mappedValue) throws Exception

    (1)pathsMatch

  • 相关阅读:
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯JavaC组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    第四届蓝桥杯C++B组国(决)赛真题
    Qt 动画快速入门(一)
    越败越战,愈挫愈勇(人生就像心电图,一帆风顺,你就挂了!)
    CSS 编码中超级有用的工具集合
  • 原文地址:https://www.cnblogs.com/lyh421/p/6394064.html
Copyright © 2020-2023  润新知