1、shiro首先是一个过滤器,filter基本功能肯定有。
我们知道filter最重要的一个接口是 void doFilter(ServletRequest request, ServletResponse response,FilterChain chain)。
所以我们由这里开始.
abstract class OncePerRequestFilter extends NameableFilter {
public final void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain){
//略
doFilterInternal(request, response, filterChain);
}
}
这个抽象类里面有个final的doFilter()函数,因为是final,所以其真正的实现放在doFilterInternal。
2、doFilterInternal函数
abstract class AbstractShiroFilter extends OncePerRequestFilter{
protected void doFilterInternal(ServletRequest servletRequest, ServletResponse servletResponse, final FilterChain chain){
final Subject subject = createSubject(request, response);
subject.execute(new Callable() {
public Object call() throws Exception {
updateSessionLastAccessTime(request, response);