2011-01-16 2 views
0

이 경우 무엇을 반환해야합니까 궁금합니다. My Ui와 서비스 계층은 서로 다른 프로젝트에 있습니다. > 사용자 사이트에 온다 - -서비스 레이어에서 무엇을 반환해야합니까? DotNetOpenAuth

일이 무엇인가> 사용자가 오픈 아이디 공급자를 선택하고 안타 로그인 -> 후 다시

[HttpPost] 
     public ActionResult Login(LoginViewModel loginViewModel) 
     { 
      var test = accountService.SendOpenIdRequest(loginViewModel.OpenId); 

     } 


public class LoginViewModel 
    { 
     public OpenId OpenId { get; set; } 
    } 

그래서 나는 뷰 모델에 걸릴 컨트롤러에 그 내 도메인을 포함 수업. 내가 반환 할 수 있도록 여러 가지가 있기 때문에 나는 길을 잃을 경우

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; 
     } 

내 SendOpenIdRequest

에서 지금까지

public class OpenId 
    { 
     public string Url { get; set; } 
    } 

지금이다. 내가 반환 할 수

나는이 지금은 asp.net MVC ActionResult에 따라 오전으로 나쁜 것 내가 (다른 프로젝트를 위해이 서비스 계층을 사용하여 말한다면 어쩌면 나는 웹 서비스를 생각하지만
return req.RedirectingResponse.AsActionResult() 

모바일 애플리케이션에 연결). 잘 돌아 가지 않을 것입니다.

나는 return OutgoingWebResponse 일 수 있었지만, 일단 되돌아 가면 무엇을해야할지 잘 모르겠다.

나는 또한 CreateRequest에서 생성 무엇 IAuthenticationRequest을 반환 할 수()

마지막으로 내가 거기에 위에 나열된 것들 중 하나를 내 도메인 개체 (오픈 ID)를 반환 할 수 있습니다.

답변

0

당신은 반환 할 수있는 OutgoingWebResponse :

public OutgoingWebResponse SendOpenIdRequest(OpenId openId) 
{ 
    using (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; 
    } 
} 

다음 컨트롤러 :

[HttpPost] 
public ActionResult Login(LoginViewModel loginViewModel) 
{ 
    var response = accountService.SendOpenIdRequest(loginViewModel.OpenId); 
    if (response == null) 
    { 
     ModelState.AddModelError(
      "openid_identifier", 
      "The specified login identifier is invalid" 
     ); 
     return View(); 
    } 
    return response.AsActionResult(); 
}