3

私は彼らのドキュメントからこれを読んでいました:

次に、カスタム資格情報認証プロバイダーを登録する必要があります。

  //Register all Authentication methods you want to enable for this web app.
  Plugins.Add(new AuthFeature(() => new AuthUserSession(),
      new IAuthProvider[] {
    new CustomCredentialsAuthProvider(), //HTML Form post of UserName/Password credentials
      }
  ));

私の質問は次のとおり です。これをどこに置くのですか? また、「UserName/Password クレデンシャルの HTML フォーム ポスト」というコメントの意味は何ですか?

現在、呼び出されたときに JSON を返す ServiceStack サービスがあります。その上に Authorize 属性を追加して、許可されたユーザーのみがアクセスできるようにしたいと考えています。

彼らが提案するように、私はクラスを作成しました:

public class CustomCredentialsAuthProvider : CredentialsAuthProvider
{
    public override bool TryAuthenticate(IServiceBase authService, string userName, string password)
    {
        //Add here your custom auth logic (database calls etc)
        //Return true if credentials are valid, otherwise false
        return false;
    }

    public override void OnAuthenticated(IServiceBase authService, IAuthSession session, IOAuthTokens tokens, Dictionary<string, string> authInfo)
    {
        //Fill the IAuthSession with data which you want to retrieve in the app eg:
        session.FirstName = "some_firstname_from_db";
        //...

        //Important: You need to save the session!
        authService.SaveSession(session, SessionExpiry);
    }
}

「カスタム資格情報認証プロバイダーを登録する」にはどうすればよいですか?

4

1 に答える 1

4

Configureのメソッド内でプラグインを登録しますAppHost。コメントは、フォームからの HTTP POST で動作することを示唆するために、コードを取得した例で使用されました。CustomCredentialsAuthProvider

public class MyApphost : AppHostHttpListenerBase
{
    public MyApphost() : base("Service Name", typeof(MyApphost).Assembly) {}

    public override void Configure(Container container)
    {
        Plugins.Add(new AuthFeature(
            () => new AuthUserSession(),
            new IAuthProvider[] { new CustomCredentialsAuthProvider()}
        ));
    }
}
于 2013-09-20T16:21:45.550 に答える