2013-04-22 69 views
1

有沒有辦法用ServiceStack管理用戶?ServiceStack用戶管理

我只找到了IUserAuthRepository接口,它有一些方法可以通過名稱,電子郵件和ID獲取用戶。但如何獲得用戶列表(使用篩選器& 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'。僅供參考,這些值可能會改變,但我不知道通過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 2013-04-24 12:56:18