2012-11-20 9 views
5

私はServiceStackを既存のWebフォームサイトと統合しようとしています。このサイトでは、フォーム認証とデータベース呼び出しなどのカスタム認証ロジックを使用しています。ServiceStackからのフォーム認証を利用する最もクリーンな方法は何ですか?

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

何か不足していますか?より良いアプローチがありますか?

答えて

6

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

具体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); 
} 
+0

マイ認証ロジックが複数の値を返すことができます:「ユーザーが見つからない」「ロックアウトされ、」などが使用することをサポートすることが可能です'CredentialAuthProvider'ですか? – Daniel

+1

これは可能ですが、まだ誰も寄付をしていません:) – mythz

関連する問題