课程咨询 :186 8716 1620      qq:2066486918

昆明Java培训 > 达内新闻 > java程序员:Session管理
  • java程序员:Session管理

    发布:昆明Java培训      来源:达内新闻      时间:2016-10-19

  • 昆明达内Java培训的老师这一期接上一期的讲Session管理。

    2.1 Servlet容器Sessions

    Web环境中,Shiro的默认Session管理器SessionManager的实现是ServletContainerSessionManager.

    这个简单默认的实现的好处是采用servlet容器的session配置的应用程序能够正常工作,而缺点是与容器相关的配置不具有通用性,如Jetty和Tomcat的配置不能互用。

    Servlet容器Session超时(Timeout)

    如果默认的servlet容器支持,这可以在web.xml中配置session超时

    <session-config>

    <!-- web.xml expects the session timeout in minutes: -->

    <session-timeout>30</session-timeout>

    </session-config>

    2.2本地session(Native Sessions)

    如果需要session配置能够跨servlet容器使用(如开发时使用Jetty,而生产环境使用Tomcat),或者需要控制特定的session/集群(session/clustering features)特征,可以启用Shiro的本地session管理。

    此处的“本地”(Native)意味着Shiro的企业级Session管理实现完全绕过了容器被用于支持所有的Subject和HttpServletRequest session。但Shiro的session管理实现时透明的,已存在的web/http相关代码照样能够正常工作。

    2.2.1 DefaultWebSessionManager

    要启用本地session管理器,需要进行配置以便覆盖默认的基于容器的session管理。通过在SecurityManager中配置一个DefaultWebSessionManager实例可以达到此目的。

    [main]

    ...

    sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager

    # configure properties (like session timeout) here if desired

    # Use the configured native session manager:

    securityManager.sessionManager = $sessionManager

    Native Session Timeout

    声明sessionManager之后,就可以依据Shiro Session Management中的选项配置session管理器,如timeout等

    [main]

    ...

    # 3,600,000 milliseconds = 1 hour

    securityManager.sessionManager.globalSessionTimeout = 3600000

    Session Cookie

    DefaultWebSessionManager支持两个web相关的配置属性

    - sessionIdCookieEnabled(布尔值)

    - sessionIdCookie(Cookie实例)

    sessionIdCookie本质上是一个模板——设置的Cookie实例属性,会被用来在运行时用合适的session id值设置真正的http cookie头

    Session Cookie配置

    DefaultWebSessionManager的默认sessionIdCookie实例是SimpleCookie。这个简单实现容许采用JavaBean样式来对相关的http Cookie属性进行配置。

    如设置cookie域(domain)(更多设置参考SimpleCookie的javadoc)

    [main]

    securityManager.sessionManager.sessionIdCookie.domain = foo.com

    与servlet规范一样,cookie的默认名称是JSESSIONID。此外,Shiro的cookie支持HttpOnly标记(flag)。为了额外的安全考虑,sessionIdCookie默认设置HttpOnly为true.

    取消Session Cookie

    [main]

    securityManager.sessionManager.sessionIdCookieEnabled = false

    下一期昆明达内Java培训的老师还有一期讲这个知识点的结尾。

    推荐文章

上一篇:Apache Shiro中Apache Shiro Web Support的配置

下一篇:Apache Shiro中的Remember Me服务

最新开班日期  |  更多

Java--零基础全日制班

Java--零基础全日制班

开班日期:11/30

Java--零基础业余班

Java--零基础业余班

开班日期:11/30

Java--周末提升班

Java--周末提升班

开班日期:11/30

Java--零基础周末班

Java--零基础周末班

开班日期:11/30

  • 网址:http://km .java.tedu.cn      地址:昆明市官渡区春城路62号证券大厦附楼6楼
  • 课程培训电话:186 8716 1620      qq:2066486918    全国服务监督电话:400-827-0010
  • 服务邮箱 ts@tedu.cn
  • 2001-2016 达内国际公司(TARENA INTERNATIONAL,INC.) 版权所有 京ICP证08000853号-56