昆明java培训
达内昆明广州春城路

18487146383

热门课程

java程序员:Session管理

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

昆明达内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培训带你了解机器学习

中美it行业数据大pk

昆明达内java培训的面试问题你都掌握了吗

机器学习领域需要掌握什么

选择城市和中心
贵州省

广西省

海南省

扫一扫

了解更多干货