先上一张图,如下图1所示,SecurityContext只有俩个方法,即getAuthentication()和setAuthentication(),如下:
图1 SecurityContext的类图
图2 SecurityContextHolder
而SecurityContextHolder则,保存的是SecurityContext,最常使用的就是SecurityContextHolder的getContext()方法。
SecurityContextHolder、SecurityContextHolderStrategy、SecurityContext紧密联系,我们虽然调用的是SecurityContextHolder.getContxt(),但它却委托给了SecurityContextHolderStrategy,SecurityContext是保存在SecurityContextHolderStrategy中的。类图如下图3所示,此图来自于《Pro Spring Security》的Chapter3,建议读者阅读原文:
图3 SecurityContextHolder、SecurityContextHolderStrategy、SecurityContext的类图
SecurityContextHolderStrategy,可以看我的这篇博客。
SecurityContext的时序图如下图4:
图4 SecurityContext的时序图
代码语言:txt复制 (adsbygoogle = window.adsbygoogle || []).push({});