有没有办法用ServiceStack管理用户?
我只找到IUserAuthRepository
接口,它有一些方法可以通过名称,电子邮件和身份来获取用户。但是如何获得用户列表(使用过滤器& co)。
感谢。
答案 0 :(得分:3)
我认为其中一些取决于您存储数据的位置和方式。
如果要将数据存储在SQL数据库中,则应该有3个表保存用户数据User, UserAuth, UserOAuthProvider
。您想要的大多数用户数据可能都在UserAuth表中。至少,这个表似乎主要用'OrmLiteAuthRepository'引用。要使用OrmLite返回用户列表(List<UserAuth>
),您可以
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();
}