确保只有计划任务可以调用控制器操作

本文关键字:调用 控制器 操作 有计划 任务 确保 | 更新日期: 2023-09-27 18:37:18

我的 ASP.NET MVC 4 网站有一个控制器操作,计划任务每 30 分钟调用一次。为了方便起见,我用它来代替服务。

该操作将执行一些基本的管理任务,我想确保只有此计划任务可以调用它。计划任务将调用www.mywebsite.com/Admin/PerformAdmin,如下所示。

public ActionResult PerformAdmin()
{
     // Only allow IP of my own server in
     if(Request.ServerVariables["REMOTE_ADDR"] == "192.145.5.52") {
          // Do admin tasks
     }
     return View();
}

这是我认为可行的一种方式,但似乎很混乱。是否有更可靠、经过验证的方法来限制控制器对此类自动呼叫的访问?

确保只有计划任务可以调用控制器操作

您可以使用控制器和计划任务之间的共享密钥,而不是使用 IP 地址。这样,如果IP地址发生变化,您仍然应该能够连接。

主要概念是您有一些密码,长密码短语或随机字符组合,这些字符仅在发送者和接收者之间知道。您需要确保具有加密连接,以便无法嗅探共享机密。