使用ASP.Net Forms模式实现WebService身份验证 补充
时间:2010-12-01 来源:wk986
下午看的是使用ASP.Net Forms模式实现WebService身份验证 这位实现的,在Web.config配置文件中加入以下代码后:
<?xml version="1.0" encoding="utf-8"?> <configuration> <system.web> <compilation debug="false" /> <authentication mode="Forms"> <forms name="MyService" loginUrl="Login.asmx"></forms> </authentication> <authorization > <deny users="?"/> </authorization> </system.web> </configuration>
浏览器访问Login.asmx文件是效果实现了,但是如果把方法不放在Login.asmx文件里,添加Web引用的时候是根本不行的,还要转到Login.asmx里面来,要是把实现方法放到这个文件里,作者也说了
“其实我们并不想在未通过身份验证时让浏览器转向到Login.asmx,对于使用WebService的客户程序来说,真正的实惠在于:可以匿名访问Login.asmx中的方法(当然我们也可以把Login.asmx放在单独的目录中,然后允许对该目录的匿名访问来达个这个目的,但我觉得还是用loginUrl更优雅一些)。”
客户程序可以匿名访问,我想这不是大家所要的达到的目的,当然是为了验证。要是可以匿名访问还费事干什么。我看评论,很多人和我遇到情况差不多,还是我们都理解错了呢,我在百度上的搜,全都是这篇文章的转栽,也不要知道转载的人试没试。作者没有贴出代码链接来,我自己实现了一下,并做了一下补充;Login.asmx文件内容如下:
/// <summary> /// Login 的摘要说明 /// </summary> [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [ToolboxItem(false)] public class Login : System.Web.Services.WebService { [WebMethod(Description = "登录")] public bool LoginIn(string userName, string password) { if (userName == "admin" && password == "admin") { System.Web.Security.FormsAuthentication.SetAuthCookie(userName, false); return true; } else { return false; } } private bool LoginCheck() { if (HttpContext.Current.User.Identity.IsAuthenticated) { return true; } return false; } [WebMethod(Description = "退出")] public void LoginOut() { if (LoginCheck()) { System.Web.Security.FormsAuthentication.SignOut(); } } [WebMethod(Description="Hello")] public string HelloWorld(string name) { if(LoginCheck()) { return "Hello:"+name; } else { return "error"; } }
为了实现效果,我做了个WinFrom的Demo,如果选择“直接调用”会返回错误(如图2),“登录调用”没有问题(如图1),使用过一次“登录调用”后,再使用“直接调用”也不会返回错误了,因为现在已经有Cookie了,如果点了“退出”按钮后或是退出程序重新开打后,再使用使用“直接调用”就又会报错了。
图1
图2
本文代码
Soap头验证代码
原文地址:http://www.cnblogs.com/chinadhf/archive/2006/10/08/520975.html
- 系统休眠文件删除后果 如何删除计算机的休眠文件 2025-04-22
- 站群服务器是什么意思 站群服务器的作用 站群服务器和普通服务器的区别 2025-04-22
- jQuery插件有何作用 jQuery插件的使用方法 2025-04-22
- jQuery插件有哪些种类 简单的jQuery插件实例 2025-04-22
-