2010-11-25 77 views
1

我有一個應用程序,我希望允許用戶輸入他們自己網站的登錄詳細信息。其中一種認證方法是'表格'。我設想它的工作方式是,用戶輸入其登錄表單的方法&動作,以及每個憑證項目的名稱/值,例如,一個用於用戶名,一個用於密碼。然後,我的應用程序會發布這些數據以模擬登錄,獲取返回的身份驗證Cookie,並能夠像登錄一樣在其網站上工作。將數據發佈到ASP.NET應用程序

原則上,這聽起來像是一種合理的事情。不過,正如我確信你知道的那樣,ASP.NET有很多輸入和隱藏的輸入,例如__VIEWSTATE,無論何時提交ASP.NET表單,它們都始終回發到服務器,例如當一個real用戶登錄。然而,當我的應用程序嘗試登錄時,它沒有該頁面上的所有輸入列表及其值,例如,總是在變化__VIEWSTATE。

我的問題:有沒有辦法將數據發佈到一個ASPX頁面,發佈只有某些輸入,並排除其他,例如, __VIEWSTATE?

如果頁面是PHP,它可能看起來像這樣:

Ex。 1:

... 
<div id="header"> 
    <form action="search.php" action="POST"> 
     <div id="search"> 
      <input type="text" name="query" id="SearchQueryText" value="Search query" /> 
      <input type="button" name=submit" id="SearchSubmitButton" value="Search!" /> 
     </div> 
    </form> 
    <form action="login.php" action="POST"> 
     <input type="text" name="uname" id="Username" value="Username" /> 
     <input type="text" name="passwd" id="Password" value="Password" /> 
     <input type="button" name=submit" id="LoginSubmitButton" value="Login" /> 
    </form> 
    ... 
</div> 
... 
在ASP.NET Web窗體

,但是,通過使用服務器控件,它很可能是這樣的:

例。 2:

... 
<body>  
    <form name="AspNetForm" method="post" action="/Products/SomethingOrOther.aspx" id="Form" enctype="multipart/form-data"> 
     <div id="header"> 
      <div id="search"> 
       <input type="text id="ctl00$SearchComponent$SearchBox" name="ctl00$SearchComponent$SearchBox" value="Search query" /> 
       <input type="submit" id="ctl00$SearchComponent$SearchSubmit" name="ctl00$SearchComponent$SearchSubmit" value="Search!"> 
      </div> 
      <div id="login"> 
       <input type="text id="ctl00$LoginComponent$Username" name="ctl00$LoginComponent$Username" value="Username" /> 
       <input type="text" id="ctl00$LoginComponent$Password" name="ctl00$LoginComponent$Password" value="Password"> 
       <input type="submit" id="ctl00$LoginComponent$LoginSubmit" name="ctl00$LoginComponent$LoginSubmit" value="Login"> 
      </div> 
     </div> 
     ... 
    </form> 
</body> 
... 

實施例1,提交登錄表單正在發佈的簡單情況UNAME =東西&的passwd =什麼東西把login.php中,然而,在ASP.NET,因爲所有的輸入被包裹在一個'全球'<form>,要提交登錄輸入,您必須提交全局表單,並因此提交所有輸入。

所以,我所追求的是一種提交只有這種全球形式的某些輸入,例如,而不是__VIEWSTATE,如果沒有事先探測網頁,我們就無法知道。

+0

如何使用webservices進行身份驗證? – jaderanderson 2010-11-25 19:06:05

+0

@jaderanderon每個站點都通過Web服務提供身份驗證邏輯嗎?是的,在一個理想的世界裏,這將是我該怎麼做的,但是,我希望系統與* all *表單認證系統兼容。自定義構建,ASP.NET登錄控件等。,唯一的共同點是通過標準化((X)HTML/HTTP POST)的表單提交用戶數據。 – oloftus 2010-11-25 22:23:14

回答

0

您可以使用與asp classic相同的asp.net頁面。

在html動作中,您可以放置​​aspx頁面,然後您必須採取該操作。

然後你可以使用asp.net的請求對象從窗體中檢索數據。同樣你可以在字符串中創建一個html表單,並通過把它放到面板控件中。

然後你可以將asp.net按鈕作爲提交按鈕。

+0

我不確定我是否遵循了你的方法,但是,我想你可能誤解了我的問題。經過四處看看,我發現這篇文章http://bytes.com/topic/c-sharp/answers/213769-submit-html-form-programmatically很好地描述了我想實現的目標。但是,它並沒有解決我的問題:ASP.NET。我修改了我的問題以更好地解釋我的問題。 – oloftus 2010-11-25 22:48:17

2

您可以使用AJAX將值回發到特定頁面。一般來說,Web窗體設計用於在觸發服務器端事件時將頁面上的所有數據回發。然後,您可以選擇在代碼中使用哪些元素/值。如果您不想在元素上使用視圖狀態,則可以禁用它(例如,EnableViewState = False)。

相關問題