【发布时间】:2015-11-10 23:45:26
【问题描述】:
我已经创建了登录表单,并想在服务器端检查输入用户名的用户是否存在或用户名和密码匹配。 我创建了角度服务:
(function (app) {
'use strict';
var baseApiPath = "http://localhost:55581/api/";
app.factory('loginService', ['$q', '$timeout', '$http',
function ($q, $timeout, $http) {
function getUser(username, password) {
var deferred = $q.defer();
$timeout(function () {
$http({
method: 'GET',
url: baseApiPath + 'login/' + username + password,
data: JSON.stringify(username, password),
headers: { 'Content-Type': 'application/JSON' }
}).success(function (data) {
deferred.resolve(data);
}).error(function (error) {
console.log('data Error:', error);
});
}, 30);
return deferred.promise;
};
return {
getUser: getUser
};
}]);
})(angular.module('myApp'));
自定义 Web Api 控制器是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using System.Web.Http;
using FoodOrdering.API.Models;
namespace FoodOrdering.API.Controllers
{
public class LoginController : ApiController
{
private FoodOrderingContext db = new FoodOrderingContext();
[Route("login/{username}/{password}")]
public async Task<IHttpActionResult> GetUser(string username,string password)
{
User user = await db.Users.FindAsync(username, password);
if (user == null)
{
return NotFound();
}
return Ok(user);
}
}
}
请注意,我已经定义了自定义路线。我的问题是:如果服务器存在并与其密码匹配,我如何从服务器获取用户。谢谢!
【问题讨论】:
-
您从哪里调用您的
loginService?你返回承诺,所以你在then函数中获得用户。 -
我已经在 loginController 中实现了:
$scope.login = function (user) { loginService.getUser(user.username,user.password).then(function (data) { $scope.logedUser = data; }); }; -
但是,问题是,当我点击这个 API 时,它并没有进入 web api 函数
标签: asp.net angularjs web-services rest web