1

有没有办法使用 ServiceStack 管理用户?

我只发现IUserAuthRepository有一些方法可以通过姓名、电子邮件和 ID 获取用户的界面。但是如何获取用户列表(带有过滤器和合作)。

谢谢。

4

1 回答 1

3

我认为其中一些取决于您存储数据的位置和方式。

如果您将数据存储在 SQL 数据库中,则应该有 3 个保存用户数据的表User, UserAuth, UserOAuthProvider。您想要的大部分用户数据可能都在 UserAuth 表中。至少,这似乎是最常被“OrmLiteAuthRepository”引用的表。List<UserAuth>要使用 OrmLite返回用户列表 ( ),您可以这样做

using (IDbConnection con = DbConnectionFactory.OpenDbConnection())
{
    var users = con.Select<UserAuth>();
}

或者使用您喜欢的访问方式。

如果您不使用 SQL 数据库,它会有所不同。我认为您可以为 Redis 执行以下操作。我不认为“配置”是直截了当的,但看起来你是从访问哈希开始的。'HashId' 有两个选项。hash:UserAuth:Email>UserId当电子邮件地址是键时使用' ',hash:UserAuth:UserName>UserId当用户名是键时使用''。仅供参考,这些值可能会改变,但我不知道通过 ServiceStack 代码访问它们的方法。

using (IRedisClient client = RedisClientManager.GetClient())
{
    var userskeys = client.GetHashKeys("hash:UserAuth:Email>UserId").ToList();
    var users =  userskeys.Select(k => client.As<UserAuth>().GetById(k)).ToList();
}
于 2013-04-23T20:47:43.717 回答