0

このシナリオの簡単なフォームは、razor/webmatrixで記述されています。ユーザーがforeachループを介してdb.Queryから提供されたログイン資格情報を使用して外部Webサイトにログインできるようにしたいと思います。foreachループを使用しない場合、ログインは機能します。DBクエリから最初の行を返し、ログインするだけです。foreachループを追加すると、資格情報なしでログインページが開きます。どんな助けでもいただければ幸いです。私のコードは以下の通りです:

var selectQueryString = "SELECT user_id,password FROM user_table
var user_row = db.Query(selectQueryString);


     <form name="UpdateOrRac" method="POST" action="Login Page URL would be here">      

             @foreach (var row in user_row){
                <div>
                 <input  name="txtUserID" value="@row.user_id" readonly="readonly" />
                 <input  name="txtPassword" value="@row.password" readonly="readonly" />
                 <input type="submit" value="Login" />
                    </div> 
            }

    </form>
4

1 に答える 1

1

foreachループを使用すると、ページはデータベースに保存されているすべてのユーザーとパスワードのペアを一緒にログインページに送信します。

ユーザーを選択してフォームに入力する必要があると思います。次のようなもの:

@{   
    var db = Database.Open("MyDb");
    var selectQueryString = "SELECT user_id,password FROM user_table WHERE user_id = @0";
    var user_row = db.QuerySingle(selectQueryString, "YourUserName");
}
 <form name="UpdateOrRac" method="POST" action="Login.cshtml">
    <div>
        <input  name="txtUserID" value="@user_row.user_id" readonly="readonly" />
        <input  name="txtPassword" value="@user_row.password" readonly="readonly" />
        <input type="submit" value="Login" />
    </div>
</form> 

編集

あなたのコメントに応えて、はい、しかし今あなたの目標はより明確です。

ログインの可能性があるアカウントのリストを取得するには、ユーザーIDとパスワードを含むクエリ文字列を含むログインページへのリンクを使用するのが最も簡単な方法です。

@{   
    var db = Database.Open("MyDb");
    var selectQueryString = "SELECT user_id,password FROM user_table";
    var user_row = db.Query(selectQueryString); 
} 

<div>
    @foreach(var row in user_row)
    {
        <p>
            @row.user_id &nbsp;&nbsp; 
            @row.password &nbsp;&nbsp;
            <a href="~/Login?id=@row.user_id&pwrd=@row.password">Login</a>
        </p>
    }
</div>  

このステートメントを使用して、Login.cshtmlページで渡されたデータを取得できます。

var user = Request.QueryString["id"];
var pwrd = Request.QueryString["pwrd"];

セキュリティが懸念される場合は、GETとPOSTがほぼ同じであることを考慮する必要があります(GETまたはPOSTのどちらが他方よりも安全ですか?

于 2012-09-07T10:43:14.940 に答える