0

对于这种情况,我有一个用 razor/webmatrix 编写的简单表格。我希望用户能够使用我的 db.Query 通过 foreach 循环提供的登录凭据登录到外部网站。如果我不使用 foreach 循环,则登录有效。它只是从数据库查询中返回第一行,然后登录。当我添加 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 回答