我有一个使用表单身份验证的C#ASP.NET 3.5 Web应用程序。用户使用login.aspx上的用户名和密码登录,使用自定义身份验证逻辑进行身份验证,然后定向到input.aspx,在那里输入一些参数并在output.aspx上获得响应。如果他们尝试访问input.aspx而不进行身份验证,则会将其重定向到login.aspx。
相同的用户希望能够在不使用Unix环境的情况下使用此Web应用程序的功能。所以我在这个Web应用程序中添加了一个Web服务文件(.asmx)。我没有为此Web服务创建单独的项目,因为Web服务使用代码文件,现有Web应用程序的global.asax中的代码,我不应该为Web服务复制该代码。
现在Web服务功能正常,但我不知道如何验证用户。 Web服务客户端将发送一次用户名和密码(可能使用“登录”webmethod,我可以编写以对其进行身份验证)然后应该能够发送多个请求(可能直到他们调用'注销'webmethod或直到他们的会话/ cookies到期)。
对于未被重定向到login.aspx页面的Web请求,我使用web.config中的location标记从Forms身份验证中排除了.asmx文件。 (我不知道这是否可行。)但后来我认为用户未在Web应用程序中进行身份验证,因此该服务使用的Web应用程序代码将无法访问,对吧?
答案 0 :(得分:2)
我建议您快速阅读此链接(http://msdn.microsoft.com/en-us/library/ms977327.aspx),然后使用此链接(http://msdn.microsoft.com/en-us/library/9z52by6a(VS.80).aspx)进行跟进。自定义安全标头可能是您希望在表单身份验证之外保护Web服务的地方。它确实意味着每个方法调用都需要提供头文件。