Springsecurity之SecurityContextHolderStrategy

注:下面分析的版本是spring-security-4.2.x,源碼的github地址是: https://github.com/spring-projects/spring-security/tree/4.2.xjava

先上一張圖:git

                                           圖1 SecurityContextHolderStrategy的三個實現類github

1. ThreadLocalSecurityContextHolderStrategy

    它裏面使用的是ThreadLocal,以下List-1所示:spring

    List-1 spa

private static final ThreadLocal<SecurityContext> contextHolder = new ThreadLocal<SecurityContext>();

2.InheritableThreadLocalSecurityContextHolderStrategy

    它裏面使用的是InheritableThreadLocal,以下List-2所示:code

    List-2blog

private static final ThreadLocal<SecurityContext> contextHolder = new InheritableThreadLocal<SecurityContext>();

    ThreadLocal和InheritableThreadLocal之間是有區別的,InheritableThreadLocal的做用更廣,這裏就再也不深刻。get

3.GlobalSecurityContextHolderStrategy

    它裏面使用的是靜態屬性,以下List-3所示:源碼

    List-3it

private static SecurityContext contextHolder;
相關文章
相關標籤/搜索