我正在使用用c#构建的Web API项目,我有一些控制器。
控制器有自己的构造方法,在构造函数中我正在检查身份验证。
当身份验证成功时,它应该执行所需的功能,如果不是,我希望它将JSON作为无效授权返回。
我有以下代码来执行此操作: -
public class UsersController : Controller
{
private RM.Data.IUserData _userData;
private String APIToken = AppConfig.GetConfigValue("APIToken");
public UsersController()
{
if (match)
{
// then execute function
}
else
{
// stop execution
}
}
}
我已尝试以下方法来停止执行该功能。
return;
HttpResponse.End();
System.Threading.Thread.CurrentThread.Interrupt();
System.Threading.Thread.CurrentThread.Abort();
System.Web.HttpContext.Current.Response.Close();
Enviorment.Exit(0);
Enviorment.Exit(1);
Enviorment.Exit(-1);
有些人终止应用程序,其他人让api继续处理。
我有大约50个API,无法将此功能附加到每个API。在这种情况下可以做些什么。
上面没有任何对我有用的东西。你能帮忙吗?
答案 0 :(得分:3)
在我正在检查身份验证的构造函数中。
那是非常错误的。您应该至少在控制器级别使用[Authorize]
属性。如果您正在执行自定义授权逻辑,请在web api管道中的Authentication Filter
中执行它。见https://exceptionnotfound.net/the-asp-net-web-api-2-http-message-lifecycle-in-43-easy-steps-2/