获取存储在IAuthRepository中的所有用户的列表

时间:2017-05-01 15:25:58

标签: servicestack

看起来没有方法从IAuthRepository检索List或者我错过了什么?

我使用Redis实现,所以我需要一些哈希或Alias键来进行一些过滤。如果没有实现所有这些接口的自定义版本,我会如何做到这一点?

我已经实现了我自己的IUserAuth版本,我需要一些新的道具,我喜欢搜索。那么最好的地方在哪里:

  1. 创建一些别名/哈希值,以便快速访问具有某些属性的用户。我想它需要一些CreateUserAuth(...)方法的特殊实现,但不知道从哪里开始而不破坏其他东西......
  2. 有没有办法快速扩展IAuthRepository的Redis实现来获取
    • 所有用户的列表
    • 符合特定条件的用户列表(存储在1下的密钥。)
  3. 更新

    问题1解决了。创建了我自己的仓库并将其注入服务中。在那里,我可以做到:

    using (var redis = RedisManager.GetClient())
    {
        var appUsers = redis.As<IUserAuth>();
        foundUsers = (List<IUserAuth>)appUsers.GetAll();
    }
    

    仍然是在创建新用户时无需“破坏”其他功能即可添加其他密钥的问题。

1 个答案:

答案 0 :(得分:1)

向User Auth Info添加自定义属性的最简单方法是将其存储在UserAuth Meta字典中。

您可以选择通过扩展UserAuth表来选择使用您自己的Custom UserAuth / UserAuth Details表,例如:

public class CustomUserAuth : UserAuth
{
    public string MyProperty { get; set; }
}

然后注册使用您的自定义表格的Redis Auth Repository,例如:

container.Register<IAuthRepository>(c =>
   new RedisAuthRepository<CustomUserAuth,UserAuthDetails>(
       c.Resolve<IRedisClientsManager>());