asp web服务:检查用户是否已登录

时间:2010-10-29 00:18:31

标签: asp.net asmx

我正在创建一个可以从asp.net中的Web表单调用的Web服务。 Web服务如何检查用户是否已登录以及是否是实际请求服务的登录用户?

感谢

3 个答案:

答案 0 :(得分:1)

它不能。由于您要从 ASP.NET中调用Web服务,因此您正在构建一个3层应用程序。

第1层是浏览器,第2层是ASP.NET Web应用程序。它们共享cookie和会话变量,因此ASP.NET始终可以对用户进行身份验证。你已经知道了。

第3层是Web服务。 2和3之间的通信是通过不同的HTTP连接完成的,共享不同的cookie(实际上没有)和会话变量(实际上没有,因为调用是无状态的)。

然后,您无法允许第3层上的Web服务对第1层上的客户端进行身份验证。

<强>无论其...............

仍有可能,但前提是您的网络服务本地到您的ASP.NET网络应用程序。实际上,这不太可能发生,因为Web服务是为远程呼叫而不是本地呼叫而建立的。我不认为这是你的情况。

答案 1 :(得分:0)

如果这是本地Web服务,正如djechelon建议的那样,他们将分享会话状态。使用djechelon的答案,忽略我的:)

如果没有:问更大的问题:什么阻止某人在您的网络应用程序的上下文之外调用您的Web服务:使用soapUI之类的工具?

1)锁定您的服务(使用WCF安全性)。 http://msdn.microsoft.com/en-us/library/ms731925.aspx

2)创建一个检查身份验证/授权的本地Web服务,并调用webservice:传递授权信息。

这是一种评估WS对冗余Webservice调用执行的操作的方法。如果一个叫另一个的WS符合你的性能需求,那就是你的耻辱。

答案 2 :(得分:0)

您可以在WebMethod中启用Session,如下所示:

person1
work1
1111
1,2,3,4,5,6,7,8,9,10
person2
work2
2222
1,3,2,4,5,2,3,4,1,3
person3
work3
3333
4,5,3,7,2,3,4,2,1,5

验证方法:

 [WebMethod(EnableSession = true)]
        public string DoSomthing(string para)
        {
                   user = new SystemUser();
                    if (!user.Authenticate())
                    {//401 Unauthenicated}
        }