最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

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

從理論上講,使用基于Forms的方式對WebService進行身份驗證是可行的,但是使用過程中會存在以下兩個問題:

1.基于Forms的驗證方式同時也是基于Cookie的驗證方式,在使用瀏覽器時,這個問題是不需要我們考慮的。但對于使用WebService的應(yīng)用程序來說,默認是不能保存Cookie的,需要我們自己去做這個工作。

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

接下來,我們就分步解決這兩個問題:

1.Cookie的保存問題

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

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

接下來,我們?yōu)長ogin.asmx添加用于身份驗證的WebMethod:

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

最后一步工作就是:讓客戶程序中的WebService實例與Login實例共享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,就這么簡單!

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

相關(guān)文章

  • ASP.NET使用正則表達式屏蔽垃圾信息

    ASP.NET使用正則表達式屏蔽垃圾信息

    找資料,看看如何實現(xiàn)使用正則表達式屏蔽垃圾信息,找來找去找出來的都不怎么好,有不詳細的,有代碼缺失的。最后還是找到了微軟,先摘過來,大概思路已經(jīng)有了,只需把下面微軟給的樣例代碼修改一下即可,具體能不能行還不知道,先睡一覺,起來再慢慢研究。
    2008-09-09
  • ASP.NET?MVC+EF實現(xiàn)異步增刪改查

    ASP.NET?MVC+EF實現(xiàn)異步增刪改查

    這篇文章介紹了ASP.NET?MVC+EF實現(xiàn)異步增刪改查的方法,文中通過示例代碼介紹的非常詳細。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-03-03
  • asp.net簡單實現(xiàn)頁面換膚的方法

    asp.net簡單實現(xiàn)頁面換膚的方法

    這篇文章主要介紹了asp.net簡單實現(xiàn)頁面換膚的方法,可實現(xiàn)給頁面動態(tài)添加樣式的功能,非常簡單實用,需要的朋友可以參考下
    2015-12-12
  • ASP.NET中Request.Form中文亂碼的解決方法

    ASP.NET中Request.Form中文亂碼的解決方法

    一直以為,只有 Request.QueryString 接收url查詢字符串含中文時可能會亂碼(做好編解碼工作,很容易可以避免),碰到的時候,才知道 Request.Form 接收表單的值中含中文也會亂碼,以前真是很傻很天真很無知。
    2011-03-03
  • 在.NET Core控制臺程序中如何使用依賴注入詳解

    在.NET Core控制臺程序中如何使用依賴注入詳解

    這篇文章主要給大家介紹了關(guān)于在.NET Core控制臺程序中如何使用依賴注入的相關(guān)資料,文中通過示例代碼介紹的非常詳細,需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-10-10
  • DataGrid 動態(tài)添加模板列 實現(xiàn)代碼

    DataGrid 動態(tài)添加模板列 實現(xiàn)代碼

    模版控件能讓用戶幾乎不用花費任何時間就創(chuàng)建出復(fù)雜的用戶界面. Asp.net有很多控件都使用了模版技術(shù)(DataGrid就是一個例子). 而這些控件都工作得很好, 通常, 模版可以被保存為ascx文件以增加復(fù)用性. 很有可能, 事前你是不知道你的控件是怎么布局的, 而且你需要動態(tài)的添加一些模版以應(yīng)付不同的事件.
    2009-04-04
  • ASP.NET數(shù)據(jù)綁定GridView控件使用技巧

    ASP.NET數(shù)據(jù)綁定GridView控件使用技巧

    這篇文章主要為大家詳細介紹了ASP.NET數(shù)據(jù)綁定GridView控件使用技巧,感興趣的小伙伴們可以參考一下
    2016-03-03
  • .NET中讀取Excel文件的數(shù)據(jù)及excelReader應(yīng)用

    .NET中讀取Excel文件的數(shù)據(jù)及excelReader應(yīng)用

    輕量,快速的C#編寫的庫讀取Microsoft Excel文件,這對讀取大量excel文件的朋友們很有幫助而且可以學(xué)習(xí)下ExcelDataReader的應(yīng)用,感興趣的朋友可以了解下,或許對你有所幫助
    2013-02-02
  • ASP.NET Core應(yīng)用錯誤處理之DeveloperExceptionPageMiddleware中間件呈現(xiàn)“開發(fā)者異常頁面”

    ASP.NET Core應(yīng)用錯誤處理之DeveloperExceptionPageMiddleware中間件呈現(xiàn)“開發(fā)者

    這篇文章主要給大家介紹了關(guān)于ASP.NET Core應(yīng)用錯誤處理之DeveloperExceptionPageMiddleware中間件呈現(xiàn)“開發(fā)者異常頁面”的相關(guān)資料,需要的朋友可以參考下
    2019-01-01
  • .Net中生成二維的表格的代碼 分享

    .Net中生成二維的表格的代碼 分享

    找了很久才找到的在.NET中生成二維表格的代碼,不敢獨享,現(xiàn)在就貼出來給大家看看,相信對大家有所幫助。
    2013-07-07

最新評論

昌都县| 旬邑县| 龙游县| 灵武市| 满城县| 平乡县| 齐齐哈尔市| 嵊泗县| 江北区| 大余县| 广州市| 昌都县| 新丰县| 长宁区| 康定县| 江山市| 镇雄县| 婺源县| 涿州市| 北碚区| 深州市| 天门市| 邢台县| 临澧县| 进贤县| 吉隆县| 庆阳市| 崇左市| 奎屯市| 富宁县| 苍山县| 大同市| 泗阳县| 仙桃市| 连平县| 岑巩县| 宁强县| 英吉沙县| 衢州市| 阿图什市| 密云县|