Asp.net mvc 2 我应该从服务层返回什么?DotNetOpenAuth
我想知道在这种情况下我应该返回什么。我的Ui和服务层在不同的项目中 事情就是这样 ->用户来到站点->用户选择openId提供者并点击登录->返回控制器Asp.net mvc 2 我应该从服务层返回什么?DotNetOpenAuth,asp.net-mvc-2,service-layer,Asp.net Mvc 2,Service Layer,我想知道在这种情况下我应该返回什么。我的Ui和服务层在不同的项目中 事情就是这样 ->用户来到站点->用户选择openId提供者并点击登录->返回控制器 [HttpPost] public ActionResult Login(LoginViewModel loginViewModel) { var test = accountService.SendOpenIdRequest(loginViewModel.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服务)。这不太好用
我可以返回OutgoingWebResponse
,但我真的不确定一旦我得到它该怎么办
我还可以返回从CreateRequest()生成的IAAuthenticationRequest
最后,我可以返回我的域对象(OpenId)以及上面列出的其中一个对象。您可以返回一个
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();
}