5

ServiceStackを既存のWebフォームサイトと統合しようとしています。このサイトでは、Forms Authenticationと、データベース呼び出しなどを含むカスタム認証ロジックを使用しています。

同じメカニズムを使用してServiceStack呼び出しを保護するにはどうすればよいですか?ドキュメントを読むと、データベースチェックなどを行うためにから継承するカスタム認証プロバイダーを作成し、各要求CredentialsAuthProviderに適用する要求フィルターを追加する必要があるようです。AuthenticateAttributeまた、認証されたらフォーム認証チケットを設定し、リクエストごとにチケットを確認する必要がありますか?私はそれらのことをどこで行いますか?

私は何かが足りないのですか?より良いアプローチはありますか?

4

1 に答える 1

6

MVCフォーム認証をServiceStackの認証プロバイダーと統合する例については、 CustomAuthenticationMvcUseCaseプロジェクトを参照してください。

具体的には、AccountController.Login()メソッドは、MVCからServiceStackを呼び出す方法を示しています。

[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public ActionResult Login(LoginModel model, string returnUrl)
{
    if (ModelState.IsValid)
    {
        var authService = AppHostBase.Instance.TryResolve<AuthService>();
        authService.RequestContext = CreateRequestContext();
        var response = authService.Authenticate(new Auth
        {
            UserName = model.UserName,
            Password = model.Password,
            RememberMe = model.RememberMe
        });

        // add ASP.NET auth cookie
        FormsAuthentication.SetAuthCookie(model.UserName, model.RememberMe);

        return RedirectToLocal(returnUrl);
    }

    // If we got this far, something failed, redisplay form
    ModelState.AddModelError("", 
        "The user name or password provided is incorrect.");
    return View(model);
}
于 2012-11-20T17:40:21.567 に答える