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

食品 骏域网站建设专家文山知名网站建设

食品 骏域网站建设专家,文山知名网站建设,怎么把网站模板上传到自己的网站,互联网保险和线下保险的优缺点学习目标 11.1 会话管理11.1.1 会话相关API一、获取会话二、会话属性管理三、会话信息获取四、会话控制五、会话监听六、会话DAO七、会话验证 11.2 缓存一、缓存接口二、内置缓存实现三、配置缓存四、使用缓存五、缓存清理六、注意事项 前面两章我们已经掌握了Shiro四大基石的认… 学习目标 11.1 会话管理11.1.1 会话相关API一、获取会话二、会话属性管理三、会话信息获取四、会话控制五、会话监听六、会话DAO七、会话验证 11.2 缓存一、缓存接口二、内置缓存实现三、配置缓存四、使用缓存五、缓存清理六、注意事项 前面两章我们已经掌握了Shiro四大基石的认证和授权如果没有了解可以去我主页看看 第九至十章的内容来学习且基于SpringBootShiro实现了动态认证和授权基本完成CRM客户关系管理系统重的权限控制。 本章我们学习另两个基石会话管理和加密并对上章的动态授权进行优化使用Redis缓存用户权限信息。 11.1 会话管理 11.1.1 会话相关API Shiro是一个强大的Java安全框架提供了完整的企业级会话管理功能。在Shiro中与会话相关的API主要包括以下几个方面 一、获取会话 Subject.getSession()获取当前用户的会话。如果当前没有创建会话对象则会创建一个新的会话。这等价于Subject.getSession(true)。Subject.getSession(boolean create)根据参数决定是否创建一个新的会话。如果create为true且当前没有会话则创建一个新的会话如果为false且当前没有会话则返回null。 二、会话属性管理 session.setAttribute(key, value)设置会话属性。session.getAttribute(key)获取会话属性。session.removeAttribute(key)删除会话属性。 三、会话信息获取 session.getId()获取当前会话的唯一标识。session.getHost()获取当前Subject的主机地址。在会话开始时Shiro会存储用户的IP地址和主机名以此可以判断用户的位置。session.getTimeout() session.setTimeout(毫秒)获取/设置当前Session的过期时间。session.getStartTimestamp() session.getLastAccessTime()获取会话的启动时间及最后访问时间。如果是JavaSE应用需要自己定期调用session.touch()去更新最后访问时间如果是JavaEE应用每次进入ShiroFilter都会自动调用session.touch()来更新最后访问时间。 四、会话控制 session.touch()更新会话的最后访问时间让会话保持活跃状态。session.stop()销毁会话。当调用Subject.logout()时会自动调用session.stop()方法来销毁会话。在Web应用中调用HttpSession.invalidate()也会自动调用session.stop()来销毁Shiro的会话。 五、会话监听 Shiro提供了会话监听器用于监听会话的创建、过期及停止事件。要实现自己的会话监听器需要实现SessionListener接口并重写以下方法 onStart(Session session)监听会话创建事件。onStop(Session session)监听会话销毁事件。onExpiration(Session session)监听会话过期事件。 六、会话DAO Shiro提供了SessionDAO接口及其多种实现用于会话的CRUD创建、读取、更新、删除操作。常用的实现类包括 AbstractSessionDAO提供了SessionDAO的基础实现如生成会话ID等。CachingSessionDAO提供了对开发者透明的会话缓存功能需要设置相应的CacheManager。MemorySessionDAO直接在内存中进行会话维护。EnterpriseCacheSessionDAO提供了缓存功能的会话维护默认情况下使用MapCache实现内部使用ConcurrentHashMap保存缓存的会话。 七、会话验证 Shiro提供了会话验证调度器用于定期验证会话是否已过期。如果过期将停止会话。Shiro提供了两种会话验证调度器 SessionValidationScheduler默认的会话验证调度器。QuartzSessionValidationScheduler使用Quartz作为定时任务的会话验证调度器。使用Quartz时需要导入shiro-quartz依赖。 以上内容涵盖了Shiro中与会话相关的API及其主要功能。开发者可以根据这些API和功能来实现自定义的会话管理逻辑。 11.2 缓存 在Apache Shiro中缓存是提高性能和效率的关键组件。Shiro提供了多种缓存实现允许开发者根据需求选择合适的缓存机制。以下是Shiro中与缓存相关的关键概念和代码示例 一、缓存接口 Shiro的缓存接口主要包括CacheK, V和CacheManager。 CacheK, V定义了缓存的基本操作如获取、放入、删除缓存项等。CacheManager管理多个缓存实例的工厂可以根据缓存的名称获取对应的缓存实例。 二、内置缓存实现 Shiro提供了几种内置的缓存实现 MemoryConstrainedCacheManager基于内存的缓存管理器可以设置缓存的最大数量和每个缓存项的最大大小。EhcacheManager集成Ehcache作为缓存实现。HazelcastCacheManager集成Hazelcast作为分布式缓存实现。JCacheManager集成JSR-107Java缓存API作为缓存实现。 三、配置缓存 在Shiro的配置文件中如shiro.ini或Spring配置文件可以配置缓存管理器。 例如在shiro.ini中配置Ehcache [main] cacheManager org.apache.shiro.cache.ehcache.EhCacheManager cacheManager.configLocation classpath:ehcache.xml securityManager.cacheManager $cacheManager在Spring配置中可以这样配置 bean idcacheManager classorg.apache.shiro.cache.ehcache.EhCacheManager property nameconfigLocation valueclasspath:ehcache.xml/ /bean bean idsecurityManager classorg.apache.shiro.web.mgt.DefaultWebSecurityManager property namecacheManager refcacheManager/ !-- 其他配置 -- /bean四、使用缓存 在Shiro中缓存通常用于存储授权信息如角色和权限和身份验证信息如用户信息和会话。开发者可以在自定义的Realm或过滤器中使用缓存来提高性能。 例如在自定义Realm中可以使用缓存来存储从数据库或其他数据源加载的用户信息和权限信息 public class MyRealm extends AuthorizingRealm { // 假设有一个缓存实例 private CacheString, AuthorizationInfo authorizationCache; Override protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) { String username (String) principals.getPrimaryPrincipal(); AuthorizationInfo info authorizationCache.get(username); if (info null) { // 从数据源加载授权信息 info loadAuthorizationInfo(username); // 将授权信息放入缓存 authorizationCache.put(username, info); } return info; } // 加载授权信息的方法 private AuthorizationInfo loadAuthorizationInfo(String username) { // 实现从数据源加载授权信息的逻辑 } // 设置缓存实例的方法通常在Spring配置中注入 public void setAuthorizationCache(CacheString, AuthorizationInfo authorizationCache) { this.authorizationCache authorizationCache; } }五、缓存清理 由于缓存中的数据可能会过期或无效因此需要定期清理缓存。Shiro的缓存实现通常会自动处理缓存过期和清理的问题但开发者也可以根据需要手动清理缓存。 例如在Ehcache中可以通过配置元素来设置缓存的清理策略如LRU最近最少使用、LFU最不经常使用等。 在Shiro的自定义实现中也可以调用Cache.clear()方法来手动清理缓存。 六、注意事项 缓存中的数据可能是敏感的因此要确保缓存的配置和访问控制是安全的。缓存的性能提升是以牺牲内存为代价的因此要合理设置缓存的大小和清理策略。在分布式环境中要使用分布式缓存解决方案来确保数据的一致性。 通过以上配置和使用方法开发者可以在Shiro中充分利用缓存来提高应用程序的性能和效率。
http://www.w-s-a.com/news/888805/

相关文章:

  • 网站发稿平台迪士尼网站是谁做的
  • 常州有哪些好的网站建设案例wordpress 360 插件
  • 模板网站有后台么柳城网站建设
  • 地方门户网站制作一级做c爱片的网站
  • 自己上传图片做动漫图网站北京福田汽车
  • 一级a做爰片免费网站录像ps做网站图片水印
  • 网页广告投放成都优化推广公司
  • 网站开发 印花税网页制作站点
  • 创建个人网站有什么好处国外建站系统
  • 桂林学校网站制作2018年网站设计公司
  • 建网站不想用怎样撤销搜狗收录提交入口网址
  • 做简单网站需要学什么软件有哪些南通优普网站建设
  • 网站排版尺寸湖北交投建设集团集团网站
  • 南京网站设计公司有哪些公司看动漫是怎么做视频网站
  • vs做网站怎么做窗体怎么在电脑上自己做网站吗
  • 做网站应该学什么网站编程 外包类型
  • 双鱼儿 网站建设站群系统哪个好用
  • 怎样自己做刷赞网站电商设计需要学什么软件有哪些
  • 关注城市建设网站居众装饰
  • 网站建设的语言优化企业网站
  • 成都旅游网站建设规划女性门户资讯类网站织梦dedecms模板
  • 二手车为什么做网站网站建设合作合同范文
  • 网站建设维护和网页设计做网站都需要服务器吗
  • 成都网站设计报告书系统平台
  • 怎样进行网站推广wordpress微博图床
  • 做一个平台 网站服务器搭建网架公司股价
  • 链家在线网站是哪个公司做的一个虚拟主机做2个网站
  • 网站开发实训报告模板学校网站建设计划
  • 免费手机网站制作方法什么事网站开发
  • 我们的爱情网站制作阿里云wordpress配置