Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果授权无效,请停止控制器构造函数执行_C#_Asp.net Mvc_Asp.net Web Api - Fatal编程技术网

C# 如果授权无效,请停止控制器构造函数执行

C# 如果授权无效,请停止控制器构造函数执行,c#,asp.net-mvc,asp.net-web-api,C#,Asp.net Mvc,Asp.net Web Api,我正在使用用c#构建的webapi项目,其中有几个控制器 控制器有自己的构造函数方法,我在构造函数中检查身份验证 当身份验证成功时,它应该执行所需的函数,如果没有,我希望它将JSON作为无效授权返回 我有以下代码来执行此操作:- public class UsersController : Controller { private RM.Data.IUserData _userData; private String APIToken = AppConf

我正在使用用c#构建的webapi项目,其中有几个控制器

控制器有自己的构造函数方法,我在构造函数中检查身份验证

当身份验证成功时,它应该执行所需的函数,如果没有,我希望它将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。在这种情况下可以做些什么

从上面看,没有什么对我有用。你们能帮忙吗

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


那是非常错误的。您应该至少在控制器级别使用
[Authorize]
属性。如果要执行自定义授权逻辑,请在web api管道中的
身份验证过滤器中执行该逻辑。请看

你做的都是错的。研究过滤器。这尖叫。为什么要在控制器构造函数中进行身份验证和大量处理?