2010-11-25 29 views
1

私は、ユーザーが自分のWebサイトのログインの詳細を入力できるようにするアプリケーションを用意しています。認証方法の1つが「フォーム」です。私がそれが働いていると想定したのは、ユーザがメソッド&のログインフォームのアクションを入力し、各クレデンシャルアイテムの名前/値です。 1つはユーザー名用、もう1つはパスワード用です。私のアプリケーションは、ログインをシミュレートし、返された認証クッキーを取得し、ログインしたかのように自分のサイトで作業できるように、このデータをポストします。ASP.NETアプリケーションへのデータの投稿

原則として、これは妥当な種類のように聞こえました。しかし、あなたが知っていると確信しているように、ASP.NETには多くの入力があります。 __VIEWSTATEは、ASP.NETフォームが送信されるたびに常にサーバーに返信されます。しかし、realユーザがログインしたとき。私のアプリがログインしようとすると、そのページに入力された完全なリストと、その値が表示されません。常に変化する__VIEWSTATE。

私の質問:ASPXページにデータを投稿し、のみ投稿する方法はありますか?いくつかの入力は除外します。 __VIEWSTATE?

ページがあった場合、PHPはそれはおそらく次のようになり、言う:

例。 1:

例:ASP.NET Webフォームで

... 
<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> 
... 

、しかし、サーバーコントロールを使用して、それはおそらくのように見えると思います。 2:例1で

... 
<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> 
... 

、ログインフォームを送信すると、すべての入力が "に包まれているので、ASP.NETには、しかし、login.phpするのuname =何か& passwdの= somethingelseを掲載する単純なケースでありますグローバル '<form>、ログイン入力を提出するには、グローバルフォームとすべての入力を提出する必要があります。

だから私は後で、の特定の入力を提出する方法です。 __VIEWSTATEではなく、あらかじめページを調べることなくわかりません。

+0

認証を行うためにwebservicesを使用するとどうなりますか? – jaderanderson

+0

@jaderanderon各サイトでWebサービスを通じて認証ロジックが公開されていますか?はい、理想的な世界では、これは私がそれをやる方法ですが、私はシステムが*すべてのフォーム認証システムと互換性があることを望みます。カスタムビルド、ASP.NETログインコントロールなどすべてが共通しているのは、標準化されたフォーム((X)HTML/HTTP POST)を介してユーザーデータを送信することだけです。 – oloftus

答えて

0

asp.netページはasp classicと同じように使用できます。

HTMLアクションでは、aspxページを置くことができますし、それを取らなければなりません。

asp.netのリクエストオブジェクトを使用して、フォームからデータを取得できます。同じように、文字列にHTMLフォームを作成し、それをパネルコントロールに配置することで配置できます。

次に、submitボタンとしてasp.netボタンを使用できます。

+0

私はあなたの方法にかなり従っているかどうかはわかりませんが、あなたは私の質問を誤解しているかもしれません。周りを見て、私はこの記事http://bytes.com/topic/c-sharp/answers/213769-submit-html-form-programmaticallyが、私が達成したいと思っていることをかなりよく説明していることが判明しました。しかし、それは私の問題を解決しません:ASP.NET。問題をよりよく説明するために質問を修正しました。 – oloftus

2

AJAXを使用して、値を特定のページにポストバックすることができます。一般に、Webフォームは、サーバー側のイベントをトリガーすると、ページ上のすべてのデータをポストバックするように設計されています。次に、コードで使用する要素/値を選択します。要素でビューステートを使用しない場合は、無効にすることができます(例:EnableViewState = False)。

+0

残念ながら、ログインフォームが表示されるページは、私の顧客のWebサイト/イントラネット上に表示されるので、何も無効にすることはできません。私たちは、ログインフォームと対話する必要のあるアプリケーション(異なるサーバー上の別のアプリケーション)を実行します。 AJAXを使って面白そうに聞こえる - ちょっと凝ってみてください。ありがとう。 – oloftus