在我的phonegap android应用程序中,我想使用服务器中数据库的电子邮件地址检索密码。我使用JQuery Ajax调用了wcf Rest服务。
这是我的Iservice
[OperationContract]
[WebInvoke(UriTemplate = "RetrivalPassWord/EmailAddress={EmailAddress}", Method = "GET", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare)]
string RetrivalPassWord(string EmailAddress);
这是我用于使用电子邮件地址检索密码的wcf服务(两者都位于MS-Sql数据库中)。我的问题是当我在service1.svc
中设置断点时我能够检索密码,但是无法在JQuery中显示该密码。
public string RetrivalPassWord(string EmailAddress)
{
Debugger.Break();
try
{
DataTable dtTable = new DataTable("Report");
using (SqlConnection connection = new SqlConnection(strConString))
{
using (SqlCommand cmd = new SqlCommand("[dbo].[spRetivalOf_PassWord]", connection))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
{
connection.Open();
adapter.SelectCommand.CommandType = CommandType.StoredProcedure;
adapter.SelectCommand.Parameters.Add(new SqlParameter("@EmailAddress", EmailAddress));
adapter.Fill(dtTable);
connection.Close();
string data1 = dtTable.Rows[0]["credentials"].ToString();
return data1;
}
}
}
}
catch (Exception ex)
{
clsLog objLog = new clsLog(AppDomain.CurrentDomain.BaseDirectory + "Log\\log.txt", 0);
objLog.Write(ex.ToString());
//return -1;
//return "error";
//DataTable dt = new DataTable("Error");
//return dt;
return "error";
}
}
function RetrivalPassword() {
$("#btn").click(function () {
$.ajax({
cache: false,
async: true,
type: "GET",
dataType: "json",
url: " http://localhost:49914/Service1.svc/RetrivalPassWord/EmailAddress=@EmailAddress",
data: '{ "EmailAddress": "' + $("#email").val() + '" }',
contentType: "application/json;charset=utf-8",
success: function (data1) {
var result = eval(data1);
for (var property in result) {
alert(result[property]);
}
},
Error: function (e) { alert(e.statusText); }
});
});
}
请指导我。
答案 0 :(得分:1)
您确定构建一个允许您为给定用户检索密码的服务是一个好主意。这具有严重的安全隐患。
你到底想要建造什么? (应该有更好的方法来解决这个问题,而不是通过服务检索密码......,OAuth,让你的服务器处理身份验证,而无需通过网络发送密码......)