我的应用程序(ASP.NET MVC)中有几个操作不是浏览器客户端想要调用的,而是来自我的属性的其他外部应用程序,比如Azure Scheduler和我的移动应用程序(Android)。
要使这些操作按预期工作,必须传递一个秘密参数和值。
public ActionResult SendPendingMessages(string secret = "")
{
if (!secret.Equals("hardcoded_secret"))
return null;
// Real stuff here...
} 上面的操作是调度程序每30分钟调用一次并发送预定消息的。
其他例子:
public ActionResult DownloadUndownloadedMessages(string secret = "")
{
if (!secret.Equals("hardcoded_secret"))
return null;
// Real stuff here...
} 上面的操作是我的android应用程序调用的.。
它获取未读的消息。
从这些外部应用程序中,我总是使用HTTPS,所以我确信硬编码密码(以及URL本身)是秘密的。
我不喜欢我在这里做的事。这给了我一种不好的感觉。
举几个关于这种方法的问题:
最后,问题是:
实现这个目的最正确的方法是什么?
例如,如果一个开发人员在WhatsApp工作,他就被解雇了。他能用从WhatsApp客户端应用程序中获得的知识来调用WhatsApp服务器的行为吗?
发布于 2014-04-23 06:34:48
我认为您最好的方法是遵循WebAPI路径,并实现下面post提供的答案之一:
https://stackoverflow.com/questions/23235625
复制相似问题