Das ist mein ASP.NET-Formular. Ich möchte es mit der serverseitigen Validierung unsichtbar recaptcha hinzufügen. Kann mir bitte jemand helfen?Umsetzung Invisible Google ReCaptcha für asp.net-Anwendung?
Ich kann clientseitige Validierung durchführen, aber es verwendet keinen geheimen Schlüssel. Meine anderen Fragen sind: Brauchen wir einen geheimen Schlüssel für unsichtbares Recaptcha?
Bitte lesen Sie den Servercode, den ich für Google Recaptcha verwendet habe, aber er funktioniert nicht für Invisible recaptcha. Ich erhalte diese Fehlermeldung: - reCAPTCHA Fehler: fehlende-input-Antwort: Unzulässig Recaptcha
<div id="ContactFormDiv" runat="server">
<div class="form-row form-required">
<asp:Label ID="YourNameLabel" runat="server" AssociatedControlID="YourNameTextBox"> Your Name:</asp:Label>
<asp:TextBox ID="YourNameTextBox" runat="server" CssClass="form300" MaxLength="150"></asp:TextBox>
</div>
<div class="form-row form-required">
<div id='recaptcha' class="g-recaptcha"
data-sitekey="site key"
data-callback="onSubmit"
data-size="invisible">
</div>
</div>
<div class="form-row-buttons">
<asp:Button ID="SendMessageButton" ClientIDMode="Static" runat="server" Text="Send Message" CssClass="buttonPositive"
CausesValidation="True" OnClick="SendMessageButton_Click" />
</div>
</div>
Javascript-Code
<script type="text/javascript" src="https://www.google.com/recaptcha/api.js" async defer></script>
Serverside-Code
public class MyObject
{
public string success { get; set; }
}
public static string ReCaptcha_Key = "------------------Site Key-----------------";
public static string ReCaptcha_Secret = "--------------Secret Key ---------------";
public bool ValidateReCaptcha()
{
bool Valid = false;
//start building recaptch api call
var sb = new StringBuilder();
//Getting Response String Append to Post Method
string Response = Request["g-recaptcha-response"];
string url = "https://www.google.com/recaptcha/api/siteverify?secret=" + ReCaptcha_Secret + "&response=" + Response;
sb.Append(url);
//make the api call and determine validity
using (var client = new WebClient())
{
var uri = sb.ToString();
var json = client.DownloadString(uri);
var serializer = new DataContractJsonSerializer(typeof(RecaptchaApiResponse));
var ms = new MemoryStream(Encoding.Unicode.GetBytes(json));
var result = serializer.ReadObject(ms) as RecaptchaApiResponse;
//--- Check if we are able to call api or not.
if (result == null)
{
lblmsg.Text = "Captcha was unable to make the api call";
}
else // If Yes
{
//api call contains errors
if (result.ErrorCodes != null)
{
if (result.ErrorCodes.Count > 0)
{
foreach (var error in result.ErrorCodes)
{
lblmsg.Text = "reCAPTCHA Error: " + error;
}
}
}
else //api does not contain errors
{
if (!result.Success) //captcha was unsuccessful for some reason
{
lblmsg.Text = "Captcha did not pass, please try again.";
}
else //---- If successfully verified. Do your rest of logic.
{
lblmsg.Text = "Captcha cleared ";
Valid = true;
}
}
}
}
return Valid;
}
public bool temp = true;
protected void SendMessageButton_Click(object sender, EventArgs e)
{
temp = ValidateReCaptcha();
if (temp == false)
{
lblmsg.Text = "Not Valid Recaptcha";
lblmsg.ForeColor = System.Drawing.Color.Red;
}
else
{
lblmsg.Text = "Successful";
lblmsg.ForeColor = System.Drawing.Color.Green;
}
Page.Validate();
if (this.Page.IsValid == true && temp == true)
{ //Page and invisible recaptcha is valid }
}
Ich erhalte Dieser Fehler: - reCAPTCHA Fehler: fehlende Eingabe-Antwort: Nicht Val ID Recaptcha
Invisible reCaptcha? Das macht keinen Sinn. Widerspricht das nicht dem Verwendungszweck? – VDWWD
@VDWWD Bitte suchen Sie Google Unsichtbar reCaptcha https://developers.google.com/recaptcha/docs/invisible –
ok ... Es existiert. Das tut mir leid. Der einzige Unterschied ist, dass Sie nicht auf das Kontrollkästchen klicken müssen, aber der Rest scheint derselbe zu sein, und wenn es Ihnen immer noch nicht vertraut, wird es immer noch die Validierung zeigen. – VDWWD