如果无效授权,则停止Controller构造函数执行

时间:2018-03-29 14:23:04

标签: c# asp.net-mvc asp.net-web-api

我正在使用用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。在这种情况下可以做些什么。

上面没有任何对我有用的东西。你能帮忙吗?

1 个答案:

答案 0 :(得分:3)

  

在我正在检查身份验证的构造函数中。

那是非常错误的。您应该至少在控制器级别使用[Authorize]属性。如果您正在执行自定义授权逻辑,请在web api管道中的Authentication Filter中执行它。见https://exceptionnotfound.net/the-asp-net-web-api-2-http-message-lifecycle-in-43-easy-steps-2/