1

ServiceStack でユーザーを管理する方法はありますか?

IUserAuthRepository名前、電子メール、および ID でユーザーを取得するためのメソッドがいくつかあるインターフェイスしか見つかりませんでした。ただし、ユーザーのリストを取得する方法 (フィルターと co を使用)。

ありがとう。

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」には 2 つのオプションがあります。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 に答える