主頁(yè) > 知識(shí)庫(kù) > ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例

ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例

熱門(mén)標(biāo)簽:400免費(fèi)電話怎么辦理 威海電銷(xiāo) 寧夏機(jī)器人電銷(xiāo) 河南語(yǔ)音外呼系統(tǒng)公司 關(guān)于宗地圖標(biāo)注技術(shù)規(guī)范 400電話辦理最優(yōu)質(zhì) t3出行地圖標(biāo)注怎么做 外呼電銷(xiāo)機(jī)器人軟件 河北網(wǎng)絡(luò)回?fù)芡夂粝到y(tǒng)

本文實(shí)例講述了ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用方法。分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

在安全性要求不是很高的ASP.Net程序中,基于Forms的身份驗(yàn)證是經(jīng)常使用的一種方式,而如果需要對(duì)WebService進(jìn)行身份驗(yàn)證,最常用的可能是基于Soap 標(biāo)頭的自定義身份驗(yàn)證方式。如果對(duì)兩者做一下比較的話,顯然,基于Forms的驗(yàn)證方式更加方便易用,能否將Forms驗(yàn)證方式應(yīng)用到WebService中去呢?

從理論上講,使用基于Forms的方式對(duì)WebService進(jìn)行身份驗(yàn)證是可行的,但是使用過(guò)程中會(huì)存在以下兩個(gè)問(wèn)題:

1.基于Forms的驗(yàn)證方式同時(shí)也是基于Cookie的驗(yàn)證方式,在使用瀏覽器時(shí),這個(gè)問(wèn)題是不需要我們考慮的。但對(duì)于使用WebService的應(yīng)用程序來(lái)說(shuō),默認(rèn)是不能保存Cookie的,需要我們自己去做這個(gè)工作。

2.WebService既然是一個(gè)A2A(Application To Application)應(yīng)用程序,使用Web表單進(jìn)行身份驗(yàn)證顯然不太合適,而且,這將不可避免的造成人機(jī)交互,使WebService的應(yīng)用大打折扣。

接下來(lái),我們就分步解決這兩個(gè)問(wèn)題:

1.Cookie的保存問(wèn)題

WebService的客戶(hù)端代理類(lèi)有一個(gè)屬性CookieContainer可用于設(shè)置或獲取Cookie集合,保存Cookie的任務(wù)就交給他了:

System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
MyService.WebService service = new App.MyService.WebService();
service.CookieContainer = cookieContainer;

2.我們不想使用Web表單進(jìn)行身份驗(yàn)證,幸運(yùn)的是,ASP.Net表單驗(yàn)證中的表單頁(yè)(即Web.config文件中 forms 元素內(nèi)的loginUrl)同樣可以指定為WebService文件。
我們創(chuàng)建一個(gè)專(zhuān)門(mén)用作身份驗(yàn)證的Web服務(wù),暫且命名為L(zhǎng)ogin.asmx,然后讓 loginUrl 等于 “Login.asmx”,當(dāng)然,還需要在Web.config文件中的 authorization 節(jié)中禁止匿名訪問(wèn)(否則我們可就白忙活了),完成配置后的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>

其實(shí)我們并不想在未通過(guò)身份驗(yàn)證時(shí)讓瀏覽器轉(zhuǎn)向到Login.asmx,對(duì)于使用WebService的客戶(hù)程序來(lái)說(shuō),真正的實(shí)惠在于:可以匿名訪問(wèn)Login.asmx中的方法(當(dāng)然我們也可以把Login.asmx放在單獨(dú)的目錄中,然后允許對(duì)該目錄的匿名訪問(wèn)來(lái)達(dá)個(gè)這個(gè)目的,但我覺(jué)得還是用loginUrl更優(yōu)雅一些)。

接下來(lái),我們?yōu)長(zhǎng)ogin.asmx添加用于身份驗(yàn)證的WebMethod:

[WebMethod]
public bool Check(string userName,string password)
{
 if(userName == "aaaaaa"  password == "123456")
 //添加驗(yàn)證邏輯
 {
 System.Web.Security.FormsAuthentication.SetAuthCookie(userName, false);
 return true;
 }
 else
 {
 return false;
 }
}

最后一步工作就是:讓客戶(hù)程序中的WebService實(shí)例與Login實(shí)例共享CookieContainer。

class Sample
{
 System.Net.CookieContainer cookieContainer = new System.Net.CookieContainer();
 public void Login()
 {
 MyServiceLogin.Login login = new App.MyServiceLogin.Login();
 login.CookieContainer = cookieContainer;
 login.Check("aaaaaa", "123456");   
 }
 public void ShowHelloWorld()
 {
 MyService.WebService service = new App.MyService.WebService();
 service.CookieContainer = cookieContainer;
 Console.WriteLine(service.HelloWorld());
 }
}

Login()以后再ShowHelloWorld(),你是否看到了我們熟悉的“Hello World”?Ok,就這么簡(jiǎn)單!

希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

您可能感興趣的文章:
  • Jquery + Ajax調(diào)用webService實(shí)例代碼(asp.net)
  • asp.net下使用jquery 的ajax+WebService+json 實(shí)現(xiàn)無(wú)刷新取后臺(tái)值的實(shí)現(xiàn)代碼
  • PHP中調(diào)用ASP.NET的WebService的代碼
  • jQuery Ajax方法調(diào)用 Asp.Net WebService 的詳細(xì)實(shí)例代碼
  • ASP.NET WebService中使用ASP.NET_SessionId的問(wèn)題說(shuō)明
  • 使用ASP.NET一般處理程序或WebService返回JSON的實(shí)現(xiàn)代碼
  • asp.net(c#)動(dòng)態(tài)修改webservice的地址和端口(動(dòng)態(tài)修改配置文件)
  • asp.net類(lèi)庫(kù)中添加WebService引用出現(xiàn)問(wèn)題解決方法
  • asp.net webservice返回json的方法
  • ASP.NET如何定時(shí)調(diào)用WebService服務(wù)
  • ASP.NET調(diào)用WebService服務(wù)的方法詳解
  • ASP.NET中Webservice安全 實(shí)現(xiàn)訪問(wèn)權(quán)限控制
  • ASP.NET中基于soaphead的webservice安全機(jī)制

標(biāo)簽:樂(lè)山 吉林 廣元 固原 池州 咸寧 淮北 賀州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例》,本文關(guān)鍵詞  ASP.NET,實(shí)現(xiàn),基于,Forms,認(rèn)證,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用實(shí)例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章