最近在搞利用memcached共享session,公司原有的代码使用java_memcached作客户端,而java_memcached在各种测试中显示出来的效率并不算好,所以找了这个javaeye首页 上的xmemcached 自己封装了HttpServletRequest和Session,实现了一些其它功能包括xmemcached不可用时自动切换会HttpSession和多memcached的同步(后一个似乎xmemcached会在以后版本加入)
把以上程序应用到系统中时,为了调试特别看了下request和session的attribute,尤其是spring security的,由于以前没有深入看过spring security的实现,开始很是困惑了一下,这里把关键的地方记录一下以备查询
1) memcached的Filter必须放在所有用到session的Filter之前,包括spring security的filter。实际上我把它放在了filter-map的第一位
2)spring security 会用 Request.setAttribute在一个Reqeust中放两个参数,_spring_security_filterSecurityInterceptor_filterApplied和__spring_security_session_integration_filter_applied,两个参数为boolean,从名字中可以看出其主要目的是防止在一个Request中多次加载
3) spring security会调用HttpSessionContextIntegrationFilter的storeSecurityContextInSession,用Session.setAttribute在Session中存放SecurityContext,其中包含Authentication和Principal,并在如上所述,用 Request.setAttribute设置_spring_security_filterSecurityInterceptor_filterApplie。这里放到Session中只是为了能够跨page使用SecurityContext,spring security自己使用的是SecurityContextHolder,它的缺省实现使用的是ThreadLocal,绝大部分访问也是在ThreadLocal上进行的,不知道为什么Spring要这么设计,我猜是觉得ThreadLocal效率比Session高?
4)用memcached代理session后,SecurityContext会存放到memcached中,而Request.setAttribute的那两个则不会,当然也不需要。
分享到:
相关推荐
**SSH中集成memcached** 1. **添加依赖**:在SSH项目的pom.xml中添加memcached的客户端库,如spymemcached或xmemcached。 2. **配置Spring**: - 创建一个Memcached配置类,声明一个`MemcachedClient` bean,并...
spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块...
综上所述,"Netty+Spring Boot仿微信 全栈开发高性能后台及客户端"项目是一个综合性的学习和实践平台,涵盖了网络编程、后端开发、全栈集成以及性能优化等多个领域。通过这个项目,开发者不仅可以提升自己的技术能力...
对于初学者来说,这些都是提升技能的好机会,可以尝试使用Spring Security进行权限控制,使用JavaMailSender发送邮件,或者引入Redis或Memcached进行数据缓存。 总之,这个项目涵盖了SpringMVC、Hibernate和Spring...
6. 安全管理:学习 Spring Security,理解权限控制、认证和授权的基本原理。 7. 整合其他服务:如集成 Redis 或 Memcached 进行缓存,整合 RabbitMQ 或 Kafka 进行消息传递,使用 Spring Boot Actuator 监控应用健康...
文档中可能包含各种企业级应用示例,如CRM系统、电子商务平台等,这些示例展示了Spring.NET在实际项目中的应用,帮助开发者理解和学习如何利用框架来构建复杂的系统。 总的来说,Spring.NET框架中文参考文档是.NET...
对于开发者来说,这个项目提供了实践Spring Boot和Dubbo集成的机会,可以了解如何在实际项目中使用这些技术,理解微服务架构的设计思想,以及如何通过API接口进行服务间的通信。此外,也可以学习到如何设计和实现...
3. 文档学习:配合官方文档及Gitee项目页面的说明,理解每个集成技术的配置和使用方法。 总结,"springboot-integration-examples"是一个非常实用的学习资源,无论你是初识SpringBoot,还是希望进一步提升...
此外,通过集成Redis或Memcached等缓存技术,可以提高高并发场景下的性能。 安全性方面,Spring Security为系统提供了强大的安全防护。它可以实现用户认证和授权,防止未授权访问,保护用户数据的安全。结合JWT...
6. **安全机制**:项目可能集成了Spring Security或Apache Shiro来处理认证和授权,保护敏感资源不受非法访问。 7. **缓存技术**:为了提高性能,项目可能使用了Redis或Memcached等缓存系统,缓存经常访问的数据或...
标题“springboot-jpa-memcached”涉及到的是一个基于Spring Boot的应用程序,它集成了Spring Data JPA和Memcached作为缓存系统,并且使用Thymeleaf3作为模板引擎,同时集成了Spring Security来实现安全控制。...
在这个项目中,我们可以深入学习SpringBoot的核心特性和如何利用它来处理高并发场景。 1. **Spring Boot基础** - **自动配置**:SpringBoot通过“约定优于配置”的原则,减少了大量手动配置工作,开发者只需要添加...
同时,Spring Security可能被用来处理用户认证和授权,确保只有授权用户才能访问特定的论文资源。 前端部分可能采用了Thymeleaf或React等技术,与Spring Boot的后端进行交互,展示论文列表,提供搜索和过滤功能,...
Spring Security或Apache Shiro等工具可以用于实现用户认证和授权,防止未授权访问和攻击。 7. **缓存策略**:为了提高性能,电商系统可能采用缓存技术,如Redis或Memcached,来存储热门商品信息、用户信息等,减少...
6. **安全控制**:Spring Security可能在乐优商城项目中用于实现用户认证和授权,保护敏感的用户数据和后台接口。 7. **缓存机制**:为了提高性能,乐优商城可能会使用Redis或Memcached作为缓存系统,来存储频繁...
总的来说,"SpringBoot仿JD商城后台管理系统源码"是一个极佳的学习资源,对于希望提升Spring Boot和Java后端开发能力的程序员来说,它提供了丰富的实践案例和学习素材。通过深入研究这个项目,开发者能够更好地理解...
10. 整合测试:项目开发完成后,通常会使用JUnit或Mockito进行单元测试,Spring Boot Test进行集成测试,确保各模块功能的正确性和稳定性。 以上就是关于“Java基于SSM(Spring+SpringMVC+MyBatis)新农大校园论坛...
这个系统可能涉及到的技术和知识点还包括:MySQL数据库的使用,JDBC与MyBatis的交互,Spring Security或Shiro进行权限控制,Redis或Memcached进行缓存优化,使用Git进行版本控制,Maven或Gradle构建工具,以及单元...
3. **安全控制**:可能包含对Spring Security的增强,提供更灵活的权限控制和认证机制。 4. **任务调度**:可能实现了基于Spring的定时任务调度,支持动态配置和扩展。 5. **异常处理**:可能提供了统一的异常处理...
6. **身份验证与授权**:项目可能采用了Spring Security或JWT(JSON Web Tokens)进行用户身份验证和权限控制,确保只有合法用户才能访问敏感资源。 7. **数据缓存**:为了提高系统响应速度,可能使用Redis或...