shiro-redis做了什么

不及物动词 其他 19

回复

共3条回复 我来回复
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Shiro-Redis是基于Apache Shiro框架的一个插件,它主要用于将Shiro框架的会话管理交给Redis来处理。下面是Shiro-Redis的主要功能和作用:

    1. 会话管理:Shiro-Redis使用Redis作为会话存储,将会话信息存储在Redis数据库中。这样做的好处是可以实现分布式环境下的会话共享和管理,不受单点故障的影响。

    2. 集群环境支持:Shiro-Redis支持在集群环境下使用,多个应用服务器可以共享同一个Redis数据库,各个应用服务器之间的会话可以进行同步和共享。

    3. 高性能:Redis是一个高性能的内存数据库,使用Redis作为会话存储可以提高系统的性能和响应速度。

    4. 可扩展性:Shiro-Redis可以与其他的Shiro插件结合使用,如Shiro-Cache插件,可以实现更灵活的缓存管理和访问控制。

    5. 多语言支持:Redis支持多种语言的客户端,可以方便地与其他语言的应用程序进行集成。

    总之,Shiro-Redis在Shiro框架的基础上增加了对Redis的支持,提供了更高效、更可靠的会话管理功能,适用于分布式环境和高并发场景下的应用程序。

    1年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Shiro-Redis是一个用于Apache Shiro的插件,用于将Shiro的会话管理功能集成到Redis中。下面是Shiro-Redis做的五点事情:

    1. 会话管理:Shiro-Redis使用Redis作为会话存储介质,替代了默认的Java的内存存储方式。通过将Shiro的会话信息存储到Redis中,可以实现分布式环境下的会话共享和管理。同时,由于Redis具有高性能、高可用性和可扩展性等特点,可以提高系统的性能和可伸缩性。

    2. 会话持久化:通过将Shiro的会话信息存储到Redis中,可以实现会话的持久化。即使系统重启或者会话过期,用户的会话信息仍然可以从Redis中恢复,不会丢失任何会话状态。这对于一些需要长时间保持会话状态的系统非常重要,比如购物车等。

    3. 分布式会话共享:在分布式环境中,不同的服务实例之间需要共享用户的会话信息,以便实现单点登录和授权的功能。Shiro-Redis结合Redis的分布式特性,可以将会话信息存储在共享的Redis中,使得不同的服务实例可以访问和操作相同的会话数据,从而实现分布式会话共享。

    4. 集群环境支持:Shiro-Redis可以与Redis集群进行集成,实现高可用性和容错性。通过Redis集群的复制和故障转移机制,可以确保即使某台Redis服务器宕机,也不会丢失用户的会话信息。同时,通过Redis集群的水平扩展,可以支持大规模用户的会话管理。

    5. 缓存管理:Shiro-Redis还可以作为Shiro的缓存管理器,将Shiro框架中的缓存数据存储到Redis中。通过利用Redis的高速缓存功能,可以提高系统的性能和响应速度。同时,由于Redis的持久化特性,可以保证缓存数据的持久性,避免因系统重启而导致缓存数据丢失的问题。

    总之,Shiro-Redis为Shiro框架提供了高性能、高可用性和可扩展性的会话管理功能,可以在分布式环境中实现会话共享和持久化,同时还可以作为缓存管理器提高系统的性能。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Shiro-Redis是一个用于集成Apache Shiro和Redis的库,它用于将Shiro的会话管理功能存储在Redis数据库中。通过使用Shiro-Redis,可以实现分布式环境下的会话共享和会话持久化。

    1. 安装和配置Redis数据库:
      首先,需要安装和配置Redis数据库。在服务器上安装Redis,并确保Redis服务器正在运行。

    2. 引入Shiro-Redis依赖:
      在项目的pom.xml文件中,添加Shiro-Redis的依赖。

    <dependency>
        <groupId>org.crazycake</groupId>
        <artifactId>shiro-redis</artifactId>
        <version>3.1.0</version>
    </dependency>
    
    1. 配置Shiro-Redis的CacheManager:
      在Shiro的配置文件中,配置Shiro-Redis的CacheManager。可以使用Redisson来实现Shiro-Redis的CacheManager。
    @Bean
    public Redisson redisson() {
        Config config = new Config();
        config.useSingleServer().setAddress("redis://localhost:6379").setDatabase(0);
        return (Redisson) Redisson.create(config);
    }
    
    @Bean
    public CacheManager cacheManager(Redisson redisson) {
        RedisCacheManager redisCacheManager = new RedisCacheManager();
        redisCacheManager.setRedisson(redisson);
        return redisCacheManager;
    }
    
    1. 配置Shiro的SessionManager:
      在Shiro的配置文件中,配置Shiro-Redis的SessionManager。
    @Bean
    public SessionDAO sessionDAO(Redisson redisson) {
        RedisSessionDAO redisSessionDAO = new RedisSessionDAO();
        redisSessionDAO.setRedisson(redisson);
        return redisSessionDAO;
    }
    
    @Bean
    public SessionManager sessionManager(SessionDAO sessionDAO) {
        DefaultWebSessionManager sessionManager = new DefaultWebSessionManager();
        sessionManager.setSessionDAO(sessionDAO);
        return sessionManager;
    }
    
    1. 配置Shiro的SubjectFactory:
      在Shiro的配置文件中,配置Shiro-Redis的SubjectFactory。
    @Bean
    public SubjectFactory subjectFactory() {
        return new DefaultWebSubjectFactory();
    }
    
    1. 配置Shiro的SecurityManager:
      在Shiro的配置文件中,配置Shiro-Redis的SecurityManager。
    @Bean
    public SecurityManager securityManager(Realm realm, CacheManager cacheManager, SessionManager sessionManager, SubjectFactory subjectFactory) {
        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager(realm);
        securityManager.setCacheManager(cacheManager);
        securityManager.setSessionManager(sessionManager);
        securityManager.setSubjectFactory(subjectFactory);
        return securityManager;
    }
    
    1. 配置Shiro的FilterChainDefinition:
      在Shiro的配置文件中,配置Shiro-Redis的FilterChainDefinition。
    @Bean
    public ShiroFilterChainDefinition shiroFilterChainDefinition() {
        DefaultShiroFilterChainDefinition chainDefinition = new DefaultShiroFilterChainDefinition();
        chainDefinition.addPathDefinition("/login", "anon");
        chainDefinition.addPathDefinition("/**", "authc");
        return chainDefinition;
    }
    
    1. 配置Shiro的WebSecurityManager:
      在Spring的配置文件中,配置Shiro-Redis的WebSecurityManager。
    @Bean
    public WebSecurityManager webSecurityManager(SecurityManager securityManager) {
        return (WebSecurityManager) securityManager;
    }
    
    1. 配置Shiro的Filter:
      在Spring的配置文件中,配置Shiro-Redis的Filter。
    @Bean
    public FilterRegistrationBean<DelegatingFilterProxy> shiroFilterRegistration(WebSecurityManager webSecurityManager) {
        FilterRegistrationBean<DelegatingFilterProxy> registration = new FilterRegistrationBean<>();
        registration.setFilter(new DelegatingFilterProxy("shiroFilter"));
        registration.addInitParameter("targetFilterLifecycle", "true");
        registration.setAsyncSupported(true);
        registration.setEnabled(true);
        registration.setOrder(Ordered.HIGHEST_PRECEDENCE);
        registration.addUrlPatterns("/*");
        return registration;
    }
    
    1. 配置Shiro的配置类:
      在Spring的配置文件中,配置Shiro-Redis的配置类。
    @Configuration
    public class ShiroConfig {
        // 省略其他配置...
      
        @Bean
        public ShiroConfiguration shiroConfiguration() {
            return new ShiroConfiguration();
        }
    }
    

    通过以上步骤,我们就可以实现将Shiro的会话管理功能存储在Redis数据库中,从而实现分布式环境下的会话共享和会话持久化。

    1年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部