zoukankan      html  css  js  c++  java
  • Shiro SessionContext和SessionKey的设计概念

    SessionContext

    其行为有:

    DefaultSessionContext

    其主要是实现了SessionContext的行为,MapContext主要是实现了Map的行为

    WebSessionContext

    其主要行为是,继承了SessionContext,拥有了后者的行为

    DefaultWebSessionContext

    其主要实现了WebSessionContext的行为和RequestPairSource的行为

    RequestPairSource

    其主要行为就是获得Request和Response,但是该行为WebSessionContext也具备了,有点冗余

    HttpServletRequest的获取

    创建SessionContext时会将HttpServletRequest设置到DefaultWebSessionContext中,通过后者获得

    HttpServletRequest request = WebUtils.getHttpRequest(context);

    WebUtils

    public static HttpServletRequest getHttpRequest(Object requestPairSource) {
        ServletRequest request = getRequest(requestPairSource);
        if (request instanceof HttpServletRequest) {
            return (HttpServletRequest) request;
        }
        return null;
    }
    
    public static ServletRequest getRequest(Object requestPairSource) {
        if (requestPairSource instanceof RequestPairSource) {
            return ((RequestPairSource) requestPairSource).getServletRequest();
        }
        return null;
    }

    SessionKey

    其行为有

    DefaultSessionKey 

    其主要是实现了SessionKey的行为

    WebSessionKey 

    其主要是实现了RequestPairSource的行为,又继承了DefaultSessionKey拥有了后者的行为

    创建WebSessionKey时,将HttpServletRequest设置到WebSessionKey中

    ServletRequest request = WebUtils.getRequest(context);
    ServletResponse response = WebUtils.getResponse(context);
    SessionKey key = new WebSessionKey(session.getId(), request, response);

    通过WebSessionKey获得HttpServletRequest

    ServletRequest request = WebUtils.getRequest(key);
  • 相关阅读:
    如何使用Eclipse和GCC搭建STM32环境
    增量式pid和位置式PID参数整定过程对比
    webrtc 源码结构
    小米路由器刷Xiaomi Mi WiFi Mini openwrt
    js jQuery 右键菜单 清屏
    沉默的大多数 (王小波)
    kindle书摘-活着-余华-活着不易,珍惜
    kindle书摘-围城-相爱勿相伤
    Nagios系列1,选择
    红楼梦人物关系图,一代大师成绝响,下回分解待何人,kindle读书摘要
  • 原文地址:https://www.cnblogs.com/BINGJJFLY/p/9304983.html
Copyright © 2011-2022 走看看