我在这里使用微软asp.net identity tutorial示例应用程序,直到我对项目所需的功能感到满意为止。我需要有一个API,我可以从一个单独的MVC web应用程序调用,以对本地sql服务器进行身份验证/授权,并将登录凭据从web应用程序传递到api,以获得头令牌等。然后,我需要能够检查令牌,以获取数据或将数据保存回数据库的任何请求。
我在示例解决方案中添加了一个web应用程序项目,它只是一个带有按钮和一些jquery的表单,用于捕获被单击的提交按钮:
$(document).ready(function () {
var register = function() {
var dataa = {
Email: "password@host.com",
Password: "password",
ConfirmPassword: "password"
};
$.ajax({
type: 'POST',
url: '/api/Account/Register',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(dataa)
});
return false;
}
$('#btnRegister').click(register);
});下面是api本身的控制器:
[Authorize]
[EnableCors("*","*","*")]
[RoutePrefix("api/Account")]
public class AccountController : ApiController
{
[AllowAnonymous]
[Route("Register")]
[HttpPost]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var user = new ApplicationUser() { UserName = model.Email, Email = model.Email };
IdentityResult result = await UserManager.CreateAsync(user, model.Password);
if (!result.Succeeded)
{
return GetErrorResult(result);
}
return Ok();
}
}当我试图调用http://localhost:35714/api/Account/Register上的注册函数时,我在浏览器中得到了一个404错误(jquery-1.10.2.js:8720POST API404(未找到))。我如何从前端访问api函数,这个调用可以从我的web应用控制器进行,还是应该在客户端进行?
添加Microsoft.aspnet.cors和microsoft.aspnet.webapi.cors,将config.EnableCors()添加到webapiconfig.cs,并将EnableCors添加到从apicontroller继承的帐户控制器。
发布于 2016-10-25 03:39:46
您需要在您的接口方法中添加HttpPost属性:
[AllowAnonymous]
[Route("Register")]
[System.Web.Http.HttpPost]
public async Task<IHttpActionResult> Register(RegisterBindingModel model)
{
...发布于 2016-10-25 19:40:06
尝尝这个。
$(document).ready(function () {
var register = function() {
var dataa = {
Email: "password@host.com",
Password: "password",
ConfirmPassword: "password"
};
$.ajax({
type: 'POST',
url: '/api/Account/Register',
contentType: 'application/json; charset=utf-8',
data: {model: JSON.stringify(dataa)}
});
return false;
}
$('#btnRegister').click(register);
});https://stackoverflow.com/questions/40224447
复制相似问题