在上一篇SubjectDAO中说到了,是否启用session用于subject状态的存储取决于SessionStorageEvaluator,那这一节分析一下SessionStorageEvaluator的作用。
源码注释
Evaluates whether or not Shiro may use a {@code Subject}'s {@link org.apache.shiro.session.Session Session} to persist that {@code Subject}'s internal state.
It is a common Shiro implementation strategy to use a Subject's session to persist the Subject's identity and authentication state (e.g. after login) so that information does not need to be passed around for any further requests/invocations. This effectively allows a session id to be used for any request or invocation as the only 'pointer' that Shiro needs, and from that, Shiro can re-create the Subject instance based on the referenced Session.
However, in purely stateless applications, such as some REST applications or those where every request is authenticated, it is usually not needed or desirable to use Sessions to store this state (since it is in fact re-created on every request). In these applications, sessions would never be used.
This interface allows implementations to determine exactly when a Session might be used or not to store {@code Subject} state on a per-Subject basis.
If you simply wish to enable or disable session usage at a global level for all {@code S