我们需要创建一个仅用于身份验证/授权的简单站点。它将使用最新的OAuth和OWIN以及Microsoft Identity。我假设WebAPI是要走的路,但我是新手和MVC,所以让我知道是否有更好的方法。
我创建了一个简单的登录服务Web API ,它有一个Account
控制器。以下是我将使用的Login
操作:
[AllowAnonymous]
public ActionResult Login(string returnUrl) {
ViewBag.ReturnUrl = returnUrl;
return View();
}
这是一个简单的客户端网络应用,可以调用登录服务应用。
public async Task<ActionResult> Index() {
var client = new HttpClient();
var response = await client.GetAsync("http://localhost:19604/Account/Login");
string thing = await response.Content.ReadAsStringAsync();
return Content(thing);
}
这会返回我想要的Email
,Password
,Remember me
等视图。但是,按钮不起作用。当我点击Login
按钮时,我在/Account/Login
上获得 404 。我怀疑这是因为WebAPI控制器不再连接,客户端没有Account
控制器。
return Content(thing);
导致问题并打破它吗?
我是否需要对登录服务上的操作进行硬编码才能转到特定的URL?
或者我想要做的就是不可能?
最后,我希望这个登录服务Web API 能够返回带有登录用户声明的凭证/令牌,就像我通过客户端应用程序本身登录一样。
答案 0 :(得分:0)
首先,您的WebApi controllers
, 不会返回视图 。他们返回IHttpActionResult
(以更合理的方式,他们返回HTTP代码)
Login
按钮最好转到Mvc上下文中的login action of the account controller
。
除非您以自定义方式执行此操作,否则无法直接执行您想要的操作。
例如