zoukankan      html  css  js  c++  java
  • springSecurity源码分析——枚举类的应用SecurityFilters

          笔者一直认为阅读源码是最好的提高代码水平的方式,在阅读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框架默认提供的过滤器类

  • 相关阅读:
    codeforces 872 D. Something with XOR Queries(思维)
    hihocoder #1609 : 数组分拆II(思维)
    hihocoder #1608 : Jerry的奶酪(状压dp)
    lightoj 1126
    SpringBoot Controller接收参数的几种常用方式
    mysql恢复备份数据时,部分表数据丢失的问题
    Tomcat证书安装(pfx和jks)
    Java 数据返回接口封装
    Java RSA 公钥加密私钥解密
    Redis连接池
  • 原文地址:https://www.cnblogs.com/hzhuxin/p/2297846.html
Copyright © 2011-2022 走看看