笔者一直认为阅读源码是最好的提高代码水平的方式,在阅读springSecurity源码过程中深深体会到这一点,有些代码虽然学到的只是一些细节,但是水平的提高有时就是来源于这些点滴的积累。

      下面开始分析org.springframework.security.config.http.SecurityFilters类的源码, 这是一个Enum类,记得在C++中Enum类是非常常用的,主要目的:枚举变量,此类型的变量只可以取一个固定集合中的值。并且这些值是按一定顺序进行排列的。

     首先enum SecurityFilters 类的定是没有描述符的,说明只限在包内可访问。下面是源码,具体用法我都加了自己的一些注释,有不对之处欢迎指正。

enum SecurityFilters {
    FIRST (Integer.MIN_VALUE),
    CHANNEL_FILTER,
    CONCURRENT_SESSION_FILTER,
    SECURITY_CONTEXT_FILTER,
    LOGOUT_FILTER,
    X509_FILTER,
    PRE_AUTH_FILTER,
    CAS_FILTER,
    FORM_LOGIN_FILTER,
    OPENID_FILTER,
    LOGIN_PAGE_FILTER,
    DIGEST_AUTH_FILTER,
    BASIC_AUTH_FILTER,
    REQUEST_CACHE_FILTER,
    SERVLET_API_SUPPORT_FILTER,
    REMEMBER_ME_FILTER,
    ANONYMOUS_FILTER,
    SESSION_MANAGEMENT_FILTER,
    EXCEPTION_TRANSLATION_FILTER,
    FILTER_SECURITY_INTERCEPTOR,
    SWITCH_USER_FILTER,
    LAST (Integer.MAX_VALUE);

    private static final int INTERVAL = 100;
    private final int order;
    //构造方法,每个枚举元素都会调用构造方法完成自身的构造
    private SecurityFilters() {
       // ordinal() 方法是Enum中用来返回位置的方法
        order = ordinal() * INTERVAL;
    }

    private SecurityFilters(int order) {
        this.order = order;
    }
    //这是供应用代码调用的方法,通过该方法,每个枚举元素可以返回自身的order的值,这样也就起到了类似C++方法中的应用
    public int getOrder() {
       return order;
    }
}

补充说明:SecurityFilters列出springSecurity框架默认提供的过滤器类

相关文章:

  • 2021-05-01
  • 2022-12-23
  • 2021-10-21
  • 2022-12-23
  • 2021-08-29
  • 2022-01-27
猜你喜欢
  • 2021-10-27
  • 2021-07-29
  • 2021-08-26
  • 2021-11-28
  • 2022-12-23
  • 2021-08-31
  • 2022-12-23
相关资源
相似解决方案