Мне интересно, что я должен вернуть в этом случае. Мой пользовательский интерфейс и уровень обслуживания находятся в разных проектах.
Вот что происходит
-> Пользователь заходит на сайт -> Пользователь выбирает провайдера 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 и, если я скажу, использовать этот сервисный слой для какого-то другого проекта (возможно, у меня есть веб-сервис, который подключается к мобильному приложению). Это не сработает.
Я мог бы return OutgoingWebResponse
, но я не совсем уверен, что делать с ним, как только получу его обратно.
Я также мог бы вернуть запрос IAuthenticationRequest, сгенерированный из CreateRequest ()
Наконец, я могу вернуть свой доменный объект (OpenId) с одним из перечисленных выше.