この場合、何を返せばいいのでしょうか。私のUiとサービスレイヤーは異なるプロジェクトにあります。
これが起こることです
->ユーザーがサイトにアクセス->ユーザーがopenIdプロバイダーを選択し、ログインを押します->コントローラーにポストバック
[HttpPost]
public ActionResult Login(LoginViewModel loginViewModel)
{
var test = accountService.SendOpenIdRequest(loginViewModel.OpenId);
}
public class LoginViewModel
{
public OpenId OpenId { get; set; }
}
そこで、ドメインクラスを含むViewModelを取り込みます。
public class OpenId
{
public string Url { get; set; }
}
これまでのところ、SendOpenIdRequestで
public ? SendOpenIdRequest(OpenId openId)
{
var openIdRelyingParty = new OpenIdRelyingParty();
var response = openIdRelyingParty.GetResponse();
Identifier id;
if (Identifier.TryParse(openId.Url, out id))
{
try
{
var req = openIdRelyingParty.CreateRequest(openId.Url);
return req.RedirectingResponse
}
catch (ProtocolException ex)
{
}
}
return null;
}
今、これは私が迷子になる場所です。なぜなら、彼らは私が返すことができるものがたくさんあるからです。
戻ることができた
return req.RedirectingResponse.AsActionResult()
ただし、現在はasp.net mvc ActionResultに依存しているため、これは悪いことだと思います。このサービスレイヤーを他のプロジェクトに使用するとします(モバイルアプリケーションに接続するWebサービスがあるかもしれません)。それはうまくいきません。
できreturn OutgoingWebResponse
ましたが、取り戻したらどうしたらいいのかよくわかりません。
CreateRequest()から生成されたIAuthenticationRequestを返すこともできます
最後に、上記のいずれかを含むドメインオブジェクト(OpenId)を返すことができます。