我是AngularJS的新手,并且设置了一个基本应用程序,其前端使用web api与数据库进行交互。
我正在尝试创建一个登录屏幕,所以我将其作为我的控制器,
app.controller('loginController', function ($scope, loginService) {
$scope.authenticateLogin = function () {
// get record
var user = {
Username: $scope.username,
Password: $scope.password
};
var promisePost = loginService.post(user);
promisePost.then(function (result) {
var res = result.data;
//TODO: set permissions
},
function (errorResult) {
console.log("Unable to log in. :" + errorResult);
});
}
});
指向我服务的链接
app.service('loginService', function ($http) {
this.post = function (user) {
return $http.post(toApiUrl('login'), user);
}
function toApiUrl(actionUrl) {
return appBaseApiUrl + actionUrl;
}
});
然后链接到我的API,
public class LoginController : ApiController
{
// POST api/login
public void Post(UserLogin user)
{
if (ModelState.IsValid)
{
//checks if valid
}
}
问题在于,无论API中发生了什么授权,结果总是为空,因为我正在发帖,所以我无法发回数据。
Angular有办法解决这个问题吗?感谢。
答案 0 :(得分:0)
我认为你应该在你的Controller上做类似下面的事情,然后看看Angular中的响应。
[HttpPost]
public IHttpActionResult Authorize(User user)
{
var superAwesomeUserChecker = new SuperAwesomeUserChecker();
var result = superAwesomeUserChecker.Check(user);
if (result.IsAuthorized)
{
return Ok(result);
}
else
{
return Unauthorized(result);
}
}
您实际上不必返回内容,您只需返回Ok()
或Unauthorized()
即可。这取决于整体身份验证过程的工作方式。