5

認証とクライアントへの情報の投稿のために作成された単純なWebサービスが必要なアプリケーション(モバイルとデスクトップ)がいくつかあります。

メンバーシップデータベースを作成する方法を見つけようとしたり、使用しているWCFサービスでチェックする前のデータベースを見つけたりするのに問題が発生した後、サービススタックに遭遇しました。ですから、いくつか質問があります。

サービススタックには、すぐに使用できるデータベースとプロバイダーがあり、クライアントの認証を追加して、データベース自体を作成することができますか?だから私はそれを最初から作成する必要はありません。

それらは、私が基盤として使用できるように、サービススタックサービスとデータベースの例になっていますか?

WCFサービス全体が私を混乱させています。基本的に私が探しているのは、モバイルアプリとデスクトップアプリを承認するために使用できるサービスであり、後でいくつかの機能を追加することもできます。既存のWebサイトからは実行されないため、独自のデータベースと、それらを管理する方法が必要になります。

WCFを使用すると、タスクが非常に複雑になり、すでに使用しているデータベースとそれらを管理する方法の例は見つかりませんでした。理想的には、アカウントを管理し、WCFサービスに同じデータベースを使用させるために、空白のWebサイトをセットアップしたいと思います。

これはすべてサービススタックを使用して簡単に実行できますか?また、誰かがすでにその例を指摘できますか?私の現在のアプローチに関するヒントがあれば、それも役に立ちます。

4

1 に答える 1

12

ServiceStack に組み込まれている認証サポートについて説明している認証と承認の wikiを読むことをお勧めします。

バックエンド リポジトリ オプション

認証された UserData を長期的に永続化できるすべての潜在的なバックエンド リポジトリについて説明します。

短期セッション / キャッシング プロバイダー

認証されたクライアント セッションの高速で短期間のデータ アクセスに使用されるすべての異なるキャッシュ オプション:

デフォルトでは、指定されていない場合はMemoryCacheClientが使用されます。

サンプルプロジェクト

http://bootstrapapi.apphb.comにデプロイされているSocialBootstrap API プロジェクトのソース コードを見ることができます。これは、Web アプリケーションで有効になっている ServiceStack のサポートされているすべての認証オプションを紹介するサンプル デモです。

AppHost.ConfigureAuth()のコードとドキュメントを再投稿します。これは、構成方法の説明が既に適切に行われているためです。

AppSettings は、Web.Configに保存されている追加情報にアクセスするために、ほとんどの認証プロバイダーで使用されます。

var appSettings = new AppSettings();

AuthFeature プラグインを使用して、この Web アプリで有効にするすべての認証方法を登録します。

Plugins.Add(new AuthFeature(
    () => new CustomUserSession(), //Use your own typed Custom UserSession type
    new IAuthProvider[] {
        new CredentialsAuthProvider(),              //HTML Form post of UserName/Password credentials
        new TwitterAuthProvider(appSettings),       //Sign-in with Twitter
        new FacebookAuthProvider(appSettings),      //Sign-in with Facebook
        new DigestAuthProvider(appSettings),        //Sign-in with Digest Auth
        new BasicAuthProvider(),                    //Sign-in with Basic Auth
        new GoogleOpenIdOAuthProvider(appSettings), //Sign-in with Google OpenId
        new YahooOpenIdOAuthProvider(appSettings),  //Sign-in with Yahoo OpenId
        new OpenIdOAuthProvider(appSettings),       //Sign-in with Custom OpenId
    }));

ServiceStackを使用すると、UserAuth データをセッションに永続化するために使用する独自の型付きCustomUserSessionを指定できます。

新しいユーザーの登録サービスを有効にして、提供された資格情報で登録およびログインできるようにする場合は、次のようにします。

Plugins.Add(new RegistrationFeature());

オプションで、独自のカスタム実装でデフォルトの登録検証をオーバーライドできます。

//container.RegisterAs<CustomRegistrationValidator, IValidator<Registration>>();

OrmLite RDBMS バックエンド リポジトリを使用している場合は、DB ファクトリを登録する必要があります。この場合は、UserAuth SQL Server DB にアクセスするように構成されています。

var connStr = appSettings.Get("SQLSERVER_CONNECTION_STRING", //AppHarbor or Local connection string
    ConfigUtils.GetConnectionString("UserAuth"));
container.Register<IDbConnectionFactory>(
    new OrmLiteConnectionFactory(connStr, //ConnectionString in Web.Config
        SqlServerOrmLiteDialectProvider.Instance) {
            ConnectionFilter = x => new ProfiledDbConnection(x, Profiler.Current)
        });

上記の ConnectionFilter はオプションですが、ServiceStack の組み込みの Mini Profiler を使用して DB クエリをプロファイリングできます。

上記で RDBMS 接続を登録したので、それをフックしてIUserAuthRepository、認証機能用にします。

//Use OrmLite DB Connection to persist the UserAuth and AuthProvider info
container.Register<IUserAuthRepository>(c =>
    new OrmLiteAuthRepository(c.Resolve<IDbConnectionFactory>())); 

OrmLiteAuthRepositoryを使用すると、AuthFeatureに必要なバックエンド User Auth テーブルを自動的に作成できます。

//Drop and re-create all Auth and registration tables
var authRepo = (OrmLiteAuthRepository)container.Resolve<IUserAuthRepository>();
if (appSettings.Get("RecreateAuthTables", false))
    authRepo.DropAndReCreateTables(); 
else
    authRepo.CreateMissingTables(); //Create only the missing tables
于 2013-03-20T00:55:03.623 に答える