ASP.NET 核心中间件
ASP.NET Core Middleware
我已经构建了自定义身份中间件。在 Invoke 方法中,我正在检查请求是否有令牌等。检查令牌后,我想将请求进一步传递给控制器。它为 GET 请求工作 - 它跳转到控制器方法。它不适用于 POST 请求。
这里是调用方法
public async Task Invoke(HttpContext context)
{
//checking
await _next(context);
}
其工作控制器:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[AllowAnonymous]
[HttpGet]
public string Get()
{
return "Allow annymous";
}
}
而且没有工作
[Route("api/[controller]")]
public class AccountController : Controller
{
[AllowAnonymous]
[HttpPost]
public void Login()
{
//some logic
HttpContext.Response.WriteAsync("Unauthorized");
}
}
Making POST call Postman returns 404 not found.
尝试返回类似于 IActionResult
而不是简单的 void。
[AllowAnonymous]
[HttpPost]
public IActionResult Login()
{
// some logic
return Unauthorized();
}
相关操作的路线是 /api/Account
。确保这是正确的。
如果你想要 /api/Account/Login
:
[Route("api/[controller]/[action]")]
public class AccountController : Controller
{
[AllowAnonymous]
[HttpPost]
public void Login()
{
//some logic
HttpContext.Response.WriteAsync("Unauthorized");
}
}
看看你的代码,我希望 AccountController
中只有一种方法叫做 Login
。如果不是,请将属性 [Route("Login")]
添加到 Login
方法(确保不要像 [Route("Login")]
那样将其留空,否则它将与您当前所做的相同)。
然后调用 POST http://host:***/api/account/login
url 就可以了。
仅供参考:我已经在我的机器上尝试过这个东西并且它正在工作。
我已经构建了自定义身份中间件。在 Invoke 方法中,我正在检查请求是否有令牌等。检查令牌后,我想将请求进一步传递给控制器。它为 GET 请求工作 - 它跳转到控制器方法。它不适用于 POST 请求。
这里是调用方法
public async Task Invoke(HttpContext context)
{
//checking
await _next(context);
}
其工作控制器:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[AllowAnonymous]
[HttpGet]
public string Get()
{
return "Allow annymous";
}
}
而且没有工作
[Route("api/[controller]")]
public class AccountController : Controller
{
[AllowAnonymous]
[HttpPost]
public void Login()
{
//some logic
HttpContext.Response.WriteAsync("Unauthorized");
}
}
Making POST call Postman returns 404 not found.
尝试返回类似于 IActionResult
而不是简单的 void。
[AllowAnonymous]
[HttpPost]
public IActionResult Login()
{
// some logic
return Unauthorized();
}
相关操作的路线是 /api/Account
。确保这是正确的。
如果你想要 /api/Account/Login
:
[Route("api/[controller]/[action]")]
public class AccountController : Controller
{
[AllowAnonymous]
[HttpPost]
public void Login()
{
//some logic
HttpContext.Response.WriteAsync("Unauthorized");
}
}
看看你的代码,我希望 AccountController
中只有一种方法叫做 Login
。如果不是,请将属性 [Route("Login")]
添加到 Login
方法(确保不要像 [Route("Login")]
那样将其留空,否则它将与您当前所做的相同)。
然后调用 POST http://host:***/api/account/login
url 就可以了。
仅供参考:我已经在我的机器上尝试过这个东西并且它正在工作。