2013-04-22 3 views
1

Есть ли способ управлять пользователями с ServiceStack?Служба управления ServiceStack

Я нашел только интерфейс IUserAuthRepository, который имеет некоторые методы, чтобы получить пользователя по имени, электронной почте и идентификатору. Но как получить список пользователей (с фильтрами & co).

Спасибо.

ответ

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', когда имя пользователя является ключом. FYI, эти значения могут измениться, но я не знаю, как получить доступ к ним через код 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(); 
} 
+0

Спасибо за ваш ответ. Я думал, что в ServiceStack есть стандартный способ, который работает с каждым репозиторием. Я использую RavenDB, поэтому это должно быть легко. – dna

Смежные вопросы