我正在使用 ASP.NET Core RC1 ,我有一个API动作,客户端使用Angular调用它:
[HttpPost("account/signin")]
public async Task<IActionResult> SignIn([FromBody]SignInModel model) {
if (ModelState.IsValid) {
// Redirect to Home/Index here
} else {
return HttpBadRequest();
}
}
如何从客户端调用的此操作重定向到Home / Index操作以加载该页面?
答案 0 :(得分:2)
您需要在Angular中处理重定向,而不是在服务器上。您的登录API应该向Angular返回成功的指示,然后在调用API的Angular控制器中,您需要检查响应值并转换到相关页面。
如果您从API返回重定向响应,Angular将简单地遵循该重定向,然后将Home / Index的内容接收到其HTTP请求对象中,这不太可能是您想要的。
API方法:
[HttpPost("account/signin")]
public async Task<IActionResult> SignIn([FromBody]SignInModel model) {
if (ModelState.IsValid) {
return new { Authenticated = true };
} else {
return HttpBadRequest();
}
}
以下是您在Angualar控制器中可能需要的处理代码类型的示例(假设“/”是Home / Index的URL):
$http.post(
"account/signin",
{ "Username": vm.username, "Password": vm.password }
).then(function (authResponse) {
if (authResponse.data.Authenticated) {
// Reload the page:
$window.location.href = "/";
} else {
vm.success = false;
vm.failMessage = "Login unsuccessful, please try again.";
}
}, function (errResponse) {
// Error case.
vm.failMessage = "Unable to process login - please try again."
});