34 lines
2.0 KiB
Plaintext
34 lines
2.0 KiB
Plaintext
@startdot spring-security-servlet-flow
|
|
digraph servlet {
|
|
rankdir=TB
|
|
edge [color="#A60738"]
|
|
node [color="#A60738"]
|
|
|
|
client [shape=box, label="客户端"]
|
|
servlet [shape=box, label="Servlet"]
|
|
tokenStorage [shape=box, label="令牌缓存"]
|
|
|
|
{ rank=same; tokenStorage; RememberMeServices }
|
|
|
|
client -> FilterChain [label="原始请求"]
|
|
FilterChain -> SecurityFilterChain [label="经过中转的请求"]
|
|
SecurityFilterChain -> UsernamePasswordAuthenticationProviderFilter [label="携带有用户名和密码的请求"]
|
|
UsernamePasswordAuthenticationProviderFilter -> AuthenticationManager [label="UsernamePasswordAuthenticationToken"]
|
|
AuthenticationManager -> SecurityContext [label="认证后的Authentication"]
|
|
SecurityFilterChain -> BearerTokenAuthenticationFilter [label="携带有Authorization头的请求"]
|
|
BearerTokenAuthenticationFilter -> AuthenticationManager [label="BearerTokenAuthenticationToken"]
|
|
AuthenticationManager -> DaoAuthenticationProvider [label="UsernamePasswordAuthenticationToken"]
|
|
DaoAuthenticationProvider -> UserDetailsService [label="UserDetails"]
|
|
UserDetailsService -> DaoAuthenticationProvider [label="认证后的UserDetails"]
|
|
DaoAuthenticationProvider -> PasswordEncoder [label="用户认证密码"]
|
|
PasswordEncoder -> DaoAuthenticationProvider [label="经过加密的密码"]
|
|
DaoAuthenticationProvider -> SecurityContext [label="认证后的Authentication"]
|
|
SecurityFilterChain -> RememberMeAuthenticationFilter [label="携带RememberMe认证的请求"]
|
|
RememberMeAuthenticationFilter -> RememberMeServices [label="RememberMeAuthenticationToken"]
|
|
RememberMeServices -> tokenStorage [label="认证令牌信息"]
|
|
RememberMeServices -> SecurityContext [label="认证后的Authentication"]
|
|
SecurityFilterChain -> AnonymousAuthenticationFilter [label="不携带任何认证信息请求"]
|
|
AnonymousAuthenticationFilter -> SecurityContext [label="匿名Authentication"]
|
|
SecurityContext -> servlet [label="已经加入认证信息的请求"]
|
|
}
|
|
@enddot |