当前位置: 首页 > news >正文

厦门网站设计哪家公司好wordpress ios7

厦门网站设计哪家公司好,wordpress ios7,个人网站 名字,织梦做双语版网站引言 本篇博客翻译自Shiro 官方网站的 Session Manager 手册。 网页地址#xff1a;http://shiro.apache.org/session-management.html Shiro 会话管理支持的特性 基于POJO/J2SE#xff08;IoC容器友好的#xff09;- Shiro 中的所有东西都是基于接口的#xff0c;而且…引言 本篇博客翻译自Shiro 官方网站的 Session Manager 手册。 网页地址http://shiro.apache.org/session-management.html Shiro 会话管理支持的特性 基于POJO/J2SEIoC容器友好的- Shiro 中的所有东西都是基于接口的而且是以 POJO作为实现。因此你可以很容易地配置所有兼容 JavaBean 的会话组件如 JSON,YAML, Spring XML或者类似的机制。你也可以很容易的扩展Shiro 的组件或在必要情况下完全自定义 session 管理的功能。简单的自定义 Session 存储 - 因为 Shiro 的 Session 对象是基于 POJO的因此 Session 数据可以存储在任意数量的数据源中。因此你可以自定义你的应用 session 存储的位置例如文件系统、内存、分布式的网络缓存、关系型数据库或者是专有数据存储区。不依赖容器的集群 - Shiro 的session 可以被任何缓存产品集群管理如Ehcache Terracotta, Coherence, GigaSpaces 等等。这意味着你只需要配置一次 Session 集群不论你的应用会部署到哪种容器你的 session 都将以同样的方式聚集。不需要针对特定容器的配置。Heterogeneous Client Access - Unlike EJB or Web sessions, Shiro sessions can be ‘shared’ across various client technologies. For example, a desktop application could ‘see’ and ‘share’ the same physical session used by the same user in a web application. We are unaware of any framework other than Shiro that can support this.事件监听 - 事件监听允许你监听 session 的生命周期。你可以监听它们并对这些事件作出自定义的操作例如当某个用户的 session 过期时更新数据库的记录。主机地址保留 - Shiro Session 会保留发起主机的 IP 地址。因此你可以据此来确定用户的位置并作出相应的反应通常在IP 关联关系确定的 内网环境比较有用支持用户无操作/过期 - 由于用户无操作而导致 Session 超时是人们期望看到的但 session 可以通过 touch()方法保持“活跃”。这在富互联网应用环境非常有用用户可能一直在使用桌面应用而并没有定期与服务端产生交互但 server 端的 session 不应该因此而过期。Web 使用透明无障碍感 - Shiro 对 web 的支持 完全实现了和支持了 Servlet 2.5 对 Session 的规范HttpSession 接口和与它相关的所有API。也就是说你可以在已创建的 Web 应用中使用 Shiro 的Session 而且不需要更改任何代码。可以使用在 SSO上 - 因为 Shiro 的Session 是基于 POJO 的它们可以被存储到任意的数据源上而且如果需要的话可以在多个应用间进行共享。它还可以提供简单的登录体验因为共享会话可以保留身份验证状态单点登录。 使用 Session 和Shiro 中几乎所有的东西一样要获得 Session 对象你需要和当前执行的 用户 产生某种作用。 Subject currentUser SecurityUtils.getSubject();Session session currentUser.getSession(); session.setAttribute( someKey, someValue); currentUser.getSession() 方法默认调用了 currentUser.getSession(true)。 对于那些熟悉 HttpServletRequest API 的人Subject.getSession(boolean create) 方法在功能上和HttpServletRequest.getSession(boolean create) 方法完全一致。 如果 Subject 已经有了一个 Session 布尔类型的参数将被忽略而直接返回 session 对象。如果 Subject 还没有一个Session 且参数为 true就会创建一个 Session 对象并返回。如果 Subject 还没有一个 Session 且参数为 false 就不会创建 Session 并且返回 null。 注意getSession方法的调用在所有应用中都适用即便不是web 应用。 subject.getSession(false) 在开发框架代码确定不需要创建新的 Session 时可以获得良好的效果。 一旦你获得了一个 Subject 的 Session 你可以用它来做许多事情例如设置和取出属性设置它的 timeout等等。参考Session JavaDoc 查看更多信息。 会话管理器 SessionManager顾名思义管理应用中所有 subject 的 session  - 创建、删除、无活动过期 等等。和其他 Shiro 中的架构组件一样SessionManager 对象也是一个被SecurityManager 持有的顶级组件。 默认的 SecurityManager 实现默认使用开箱即用的 DefaultSessionManager。DefaultSessionManager可以提供所有企业级 session 管理特性如 会话过期、清理等等且同样适用于所有类型的应用。 Web 应用 Web 应用可以使用不同的 SessionManager实现类。请参考 Web 文档查看 web特定的 Session 管理信息。 和其他被 SecurityManager 管理的组件一样 SessionManager 可以通过JavaBean的形式通过 get、set 方法组装到所有 Shiro 默认的 SecurityManager 实现对象上getSessionManager()/setSessionManager()。或者例如下面使用 shiro.ini 配置文件 [main] ... sessionManager com.foo.my.SessionManagerImplementation securityManager.sessionManager $sessionManager 但是从头创建一个 SessionManager 是一件非常复杂的任务大多数人都不愿去做。Shiro的开箱即用的 SessionManager 实现是高度可定制和配置的同时满足大多数需要。本文档其余部分的大部分假设您将在介绍配置选项时使用Shiro的默认SessionManager实现但是请注意实际上您可以创建或插入几乎任何您想要的东西。 Session 超时 默认情况下SessionManager 的默认会话超时时间是 30分钟。也就是说如果任何 Session 创建后保持闲置未使用即 lastAccessedTime 没有更新超过 30 分钟或更长那么 Session 就可能过期并且不允许再继续使用。 你可以设置默认的 session 超时时间使用 globalSessionTimeout 属性来为所有的 session 定义默认的超时。例如如果你希望超时时间是一小时而不是 30分钟 [main] ... # 3,600,000 milliseconds 1 hour securityManager.sessionManager.globalSessionTimeout 3600000 单个 session 超时 globalSessionTimeout 限制所有新产生的 session 。你可以为每个 session 设置 timeout 属性。和上面的 globalSessionTimeout一样这个值也是基于 毫秒的。 Session 监听器 Shiro 支持监听器的概念允许你在一些非常重要的 session 事件发生时做出动作。你可以实现 SessionListener 接口或 继承更方便的 SessionListenerAdapter并且对 Session 操作做出相应的反应。 默认的 SessionManager的sessionListeners 属性 是一个集合你可以给 SessionManager 配置一个或者多个 监听器实现 [main] ... aSessionListener com.foo.my.SessionListener anotherSessionListener com.foo.my.OtherSessionListenersecurityManager.sessionManager.sessionListeners $aSessionListener, $anotherSessionListener, etc. 所有的 Session 事件 SessionListener 会监听所有的 session 事件并不是只为了某一个 特定的session 。 Session 存储 不论session 什么时候创建或更新它的数据都需要持久化到一个存储位置这样才能让应用程序在接下来的操作中访问到。同样当一个 Session 失效或者不再使用也需要从存储空间中删除以免存储空间耗尽。SessionManager 的实现可以将 session  的 CRUD操作委托给一个系统内部的组件即 SessionDAO 它遵从 Data Access Object DAO设计模式。 通过实现 SessionDAO 这个接口你可以和任何你希望的数据存储进行交互。也就是说你可以把你的 session 数据放到内存、或文件系统、或关系型数据库、或NoSQL 数据库中或者其他任何地方。你可以完全掌控持久化行为。 你也可以配置任何形式的 SessionDAO 实现装载到默认的SessionManager 实例中例如像下面 shiro.ini 这样 [main] ... sessionDAO com.foo.my.SessionDAO securityManager.sessionManager.sessionDAO $sessionDAO 当然人们也期望Shiro 已经准备了一些优秀的 SessionDAO 的实现你可以开箱即用或者继承他们做个性化处理。 Web 应用注意 上面的 securityManager.sessionManager.sessionDAO $sessionDAO 装载方式只适用于当使用 Shiro 自己的 session 管理器的时候。Web 应用一般情况不使用这种本地session 管理器而是保留 Servlet 容器的默认 session 管理器然而这个管理器并不支持 Shiro 的SessionDAO。如果你希望在 Web 应用中使用 Shiro 提供的SessionDAO 接口来定制 session 存储或 session 集群你必须首先配置一个Shiro 自己的web session 管理器。例如 [main] ... sessionManager org.apache.shiro.web.session.mgt.DefaultWebSessionManager securityManager.sessionManager $sessionManager# Configure a SessionDAO and then set it: securityManager.sessionManager.sessionDAO $sessionDAO 译者注Shiro native 我翻译成了 Shiro 自己的者应该是原文所表达的含义即需要开发者在Web 应用中配置 Shiro 框架为 web应用专门定制的可以支持 SessionDAO 接口的 web session 管理器 配置 SessionDAO 注意 Shiro 的默认配置 SessionManager 采用 in-memory-only 只读内存方式的Session 存储这并不适用于大多数生产应用。大多数生产应用会想要配置EHChached 支持并且提供自己的 SessionDAO实现。注意 Web应用使用基于Servlet 容器的SessionManager 作为默认实例因此不用担心这个问题。这个问题只会在使用 Shiro 自己的SessionManager 的时候需要考虑。 EHCache SessionDAO EHCache 不是默认可用的但如果你不打算实现自己的 SessionDAO那就强烈推荐为你的应用添加EHCache 来支持 Shiro 的Session 管理工作。EHCache SessionDAO 会将 session 存储到内存中并支持当内存逐渐吃紧的情况下溢出到磁盘。这可以非常良好的保证生产应用不会在运行时随机 “丢失” Session。 使用 EHCache 作为你的默认选择 如果你没有自己定制化的 SessionDAO一定译者注这里原文是推荐的口吻要在你的Shiro 配置中使用EHCache 。EHCache 不仅可以使你的 Session 受益同样也会对缓存鉴权、授权数据有所帮助。参考Chaching 文档获取更多帮助。 不依赖容器的 Session 集群 如果你迫切需要一个不依赖容器的 session 集群那EHCache 同样是不错的选择。你可以显式插入一个 TerraCotta 到你的EHCache 中并拥有一个不依赖容器的集群化的 session 缓存。再也不用担心什么Tomcat、JBoss、Jetty、WebSphere 或者 WebLogic  定制的session 集群了。 为 Session 启用EHCache 非常简单。首先确保你的项目中已经有了 shiro-ehcache-version.jar 文件。 然后下面的 shiro.ini 示例展示了如何使用 EHCache 支持所有 Shiro 缓存的需要可不仅仅是 Session 支持哦 [main]sessionDAO org.apache.shiro.session.mgt.eis.EnterpriseCacheSessionDAO securityManager.sessionManager.sessionDAO $sessionDAOcacheManager org.apache.shiro.cache.ehcache.EhCacheManager securityManager.cacheManager $cacheManager 最后一行为所有 Shiro 的需要配置了一个 CacheManager。这个 CacheManager 实例会自动传播到 SessionDAO默认实现了 CacheManagerWare 接口的 EnterpriseCacheSessionDAO 。 然后当 SessionManager 要求  EnterpriseCacheSessionDAO  去持久化一个 session 的时候它会使用一个EHCache 支持的 Cache 实现去存储 session 数据。 web 应用 不要忘记 SessionDAO 是Shiro 框架自己的SessionManager 实现所具备的特性。Web 应用默认使用 基于 Servlet 容器的 SessionManager 是不支持 SessionDAO 的。如果你想在web 应用中使用基于EHCache 的 Session 存储就需要配置一个Shiro自己的 web SessionManager 这已经在前面有所说明。 EHCache Session 缓存配置 http://shiro.apache.org/session-management.html#ehcache-session-cache-configuration 未完待续......
http://www.zqtcl.cn/news/529468/

相关文章:

  • 专业网站设计公司有哪些绿色营销案例100例
  • 网站建设买了域名山东省作风建设网站
  • 留学中介网站建设方案设计企业品牌商标
  • 会展相关网站建设情况seo的基本步骤是什么
  • 太原网站建设鸣蝉公司免费网页制作网站建设
  • 中山专业网站建设网站开发基础知识简述
  • 包头索易网站建设中国建设银行网站余额查询
  • 哪家公司做网站开发做得比较好佛山商城网站制作
  • 可以做淘宝推广的网站优化网页设计是什么
  • 邢台手机网站制作优秀网站建设哪家好
  • 网站托管运营所需资料长春专用网站建设
  • 北京网站建设招聘江苏住房和城乡建设局网站
  • 如何让订阅号菜单做微网站哪家网站做的好
  • 北京建站方案北京seo主管
  • 网站平台建设费用的会计核算凡科教育小程序怎么样
  • 网站配置文件在哪里sns网站需求
  • 网站运营优化建议英国网站域名
  • 网站开发洲际企业网站模板论坛
  • 如何建外贸网站软件工程专业是干什么的
  • 衣联网和一起做网站 哪家强网站seo方案建设目标
  • 深圳企业股权优化网站程序代码优化
  • 中国石油大学网页设计与网站建设软件界面设计要求
  • 看网站有没有做404报名网站建设
  • 有哪些是做二手的网站关于网站制作的指标
  • 网站数据库是谁提供空间坐标系做图网站
  • 网站开发的外文文献佛山做网站格
  • 石家庄网站seo服务免费10大看盘软件
  • 自己做网站卖什么给个网站好人有好报2020免费
  • 网站源码安装步骤网站开发用c 语言
  • 网站首页是什么产品网络推广方案