我有web服务asp.Net,我只想要一个特定的Web应用程序使用它,但我不能这样做。
任何人都可以告诉我如何解决这个问题。
答案 0 :(得分:1)
您可以通过在每个方法中使用密码作为参数来保护您的方法,或者在更好的方案中使用传统的表单身份验证来授权用户(在本例中为您的应用程序),然后在调用webmethods时检查用户是否已记录
例如crate授权方法如下:
[WebMethod(EnableSession = true)]
public bool Authorize(login, password)
{
if(login == "admin" && password == "supersecret")
{
FormsAuthentication.SetAuthCookie(login, false);
return true;
}
return false;
}
[WebMethod(EnableSession = true)
public string SomeWebMethod()
{
if(!User.Identity.IsAuthenticated)
throw Exception("User unathenticated");
/* method body */
}
然后,您可以在开始使用时只调用一次Authorize
方法来使用您的Web服务,然后使用您喜欢的所有方法,因为身份验证信息存储在提供服务器会话的Web服务中。
不要忘记在所有网络方法中将EnableSession
设置为true。
在您的网络服务中添加方法
public bool CanExecute()
{
return Context.Request.UserHostAddress == "290.110.11.12" /* put real ip here */
}
然后在你的网络方法中使用
[WebMethod(EnableSession = true)
public string SomeWebMethod()
{
if(!CanExecute())
throw Exception("User unathenticated");
/* method body */
}
希望这会有所帮助:)
答案 1 :(得分:1)
如果您知道允许使用您的网络服务的唯一计算机的IP地址,您可以检查它并返回404或异常(如果不是。)