ServiceStack用户管理

时间:2013-04-22 17:53:59

标签: authentication servicestack user-management

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

我只找到IUserAuthRepository接口,它有一些方法可以通过名称,电子邮件和身份来获取用户。但是如何获得用户列表(使用过滤器& co)。

感谢。

1 个答案:

答案 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();
}