亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時(shí)間:2015年05月08日 15:26:22   作者:xujh  
這篇文章主要介紹了ASP.NET實(shí)現(xiàn)基于Forms認(rèn)證的WebService應(yīng)用,實(shí)例分析了使用Forms進(jìn)行WebService身份認(rèn)證的相關(guān)技巧與實(shí)現(xiàn)方法,需要的朋友可以參考下

本文實(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的客戶端代理類(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的客戶程序來(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;
 }
}

最后一步工作就是:讓客戶程序中的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ì)有所幫助。

相關(guān)文章

  • ASP.NET簡(jiǎn)化編輯界面解決思路及實(shí)現(xiàn)代碼(2)

    ASP.NET簡(jiǎn)化編輯界面解決思路及實(shí)現(xiàn)代碼(2)

    這篇與前一篇改進(jìn)部分,也許大家會(huì)留意到動(dòng)畫(huà)演示,主要是GridVeiw的更新與刪除會(huì)在每row都有。因此Insus.NET把它抽取出來(lái),放在GridView外,感興趣的朋友可以了解下啊,希望本文對(duì)你有所幫助
    2013-01-01
  • ASP.NET 頁(yè)生命周期概述(小結(jié))

    ASP.NET 頁(yè)生命周期概述(小結(jié))

    了解個(gè)掌握ASP.NET頁(yè)面生命周期是非常必要的,這有助于我們更加靈活的控制頁(yè)面,以我們需要的方式編程開(kāi)發(fā)。本文詳細(xì)的介紹了ASP.NET 頁(yè)生命周期,感興趣的可以了解一下
    2018-11-11
  • .Net程序防止被注入代碼(整站通用)分享

    .Net程序防止被注入代碼(整站通用)分享

    防止sql注入,通常一個(gè)一個(gè)文件修改不僅麻煩而且還有漏掉的危險(xiǎn),下面我說(shuō)一上如何從整個(gè)系統(tǒng)防止注入
    2013-11-11
  • ASP.NET2.0緩存(Cache)技術(shù)深入理解

    ASP.NET2.0緩存(Cache)技術(shù)深入理解

    緩存技術(shù)是ASP.NET2.0非常重要的一個(gè)特性,它提供了一種非常好的本地?cái)?shù)據(jù)緩存機(jī)制,從而有效的提高數(shù)據(jù)訪問(wèn)的性能
    2012-11-11
  • Discuz!nt 源文件變成亂碼的解決方法

    Discuz!nt 源文件變成亂碼的解決方法

    其實(shí)原因就是因?yàn)闆](méi)有默認(rèn)編碼類(lèi)型。按照下面的方法加載即可。
    2009-06-06
  • 如何在.Net?7中將Query綁定到數(shù)組詳解

    如何在.Net?7中將Query綁定到數(shù)組詳解

    這篇文章主要給大家介紹了關(guān)于如何在.Net?7中將Query綁定到數(shù)組的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2022-12-12
  • asp.net實(shí)現(xiàn)Postgresql快速寫(xiě)入/讀取大量數(shù)據(jù)實(shí)例

    asp.net實(shí)現(xiàn)Postgresql快速寫(xiě)入/讀取大量數(shù)據(jù)實(shí)例

    本篇文章主要介紹了asp.net實(shí)現(xiàn)Postgresql快速寫(xiě)入/讀取大量數(shù)據(jù)實(shí)例,具有一定的參考價(jià)值,有興趣的可以了解一下
    2017-07-07
  • asp.net判斷字符串是否是中文的方法

    asp.net判斷字符串是否是中文的方法

    asp.net判斷字符串是否是中文的方法,需要的朋友可以參考一下
    2013-03-03
  • ASP.NET Core 應(yīng)用程序中的靜態(tài)文件中間件的實(shí)現(xiàn)

    ASP.NET Core 應(yīng)用程序中的靜態(tài)文件中間件的實(shí)現(xiàn)

    這篇文章主要介紹了ASP.NET Core 應(yīng)用程序中的靜態(tài)文件中間件的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • WinForm中DataGridView折疊控件【超好看】

    WinForm中DataGridView折疊控件【超好看】

    剛到一家新公司,領(lǐng)導(dǎo)下發(fā)任務(wù)要用cs系統(tǒng)做一個(gè)表格折疊顯示,這真是把我難倒了,自己工作6年一直以來(lái)都是做BS的系統(tǒng),于是上網(wǎng)搜了相關(guān)視頻,資料,開(kāi)始學(xué)習(xí)起來(lái),下面小編把WinForm中DataGridView折疊控件的知識(shí)分享給大家,供大家參考
    2016-05-05

最新評(píng)論