如何禁用redis将自动会话存储到db?

时间:2014-07-18 08:21:07

标签: authentication redis servicestack servicestack.redis

我使用此代码存储redis db

   redisClientsManagerX = new PooledRedisClientManager("127.0.0.1:6379");
    container.Register<IRedisClientsManager>(c => redisClientsManagerX);
   container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient()).ReusedWithin(Funq.ReuseScope.None);


            Plugins.Add(new AuthFeature(() => new AuthUserSession(),  new IAuthProvider[] { new BasicAuthProvider() }
  ));

            // Use a RedisAuthRepository
            var userRepo = new RedisAuthRepository(redisClientsManagerX);
            container.Register<IUserAuthRepository>(userRepo);

            // Enable the RegistrationFeature
            Plugins.Add(new RegistrationFeature());

但是,当我检查redis db; enter image description here

有没有办法禁用此自动iauthsessionstore禁用?

1 个答案:

答案 0 :(得分:2)

因此,您希望将用户配置文件存储在Redis中,并使用此来源对其进行身份验证,但您不希望将活动会话存储在Redis中?尽管我不确定这是一个常见的情况,但有可能看到这个答案结尾处的警告。

更改为MemoryCacheProvider

您可以通过将缓存提供程序指定为MemoryCacheClient而不是使用Redis缓存客户端来阻止会话存储到Redis。

从以下位置更改此行:

container.Register<ICacheClient>(c => c.Resolve<IRedisClientsManager>().GetCacheClient()).ReusedWithin(Funq.ReuseScope.None);

要:

container.Register<ICacheClient>(c => new MemoryCacheClient());

警告:

  • 会话数据将存储在ServiceStack应用程序的内存中。
  • 如果您使用的是IIS,则IIS可能会随时回收该应用程序,并且缓存内容将会丢失。
  • 在内存中,此类缓存已本地化到运行应用程序的服务器,因此不适合服务器场/群集。