Prosím o radu. Pro přihlášení do admistrátorské sekce používám komponentu login (Membership Provider), která samostatně bez Recaptcha funguje v pořádku, ale rád bych zapezpečil přihlášení pomocí opsání kódu z Recaptcha for .NET.
Vytvořil jsem událost na tlačítko přihlášení, kde jsou možné stavy Recaptcha. Nevím, kam nasměrovat... po úspěšném opsání kódu, jelikož po správném opsání kódu a loginu se vrátím na přihlášení. Redirect přímo do složky/stránky nefunguje.
Popřípadě uvítám jiné řešení... Předem moc děkuji.
Login.aspx:
<%@ Page Language="C#" AutoEventWireup="true" Async="true" CodeFile="Login.aspx.cs" Inherits="Login" UICulture="auto" %>
<%@ Register Assembly="Recaptcha.Web" Namespace="Recaptcha.Web.UI.Controls" TagPrefix="cc1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Přihlášení</title>
</head>
<body>
<form id="formAdmin" runat="server">
<div>
<asp:Login ID="Login1" runat="server" OnAuthenticate="Login1_Authenticate" ></asp:Login>
<cc1:Recaptcha ID="recaptchaLogin" PublicKey="XXX" PrivateKey="XXX" runat="server" />
<asp:Label ID="lblmsg" runat="server" Text=""></asp:Label>
</div>
</form>
</body>
</html>
Login.aspx.cs:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Recaptcha.Web;
public partial class Login : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
}
protected async void Login1_Authenticate(object sender, AuthenticateEventArgs e)
{
if (String.IsNullOrEmpty(recaptchaLogin.Response))
{
lblmsg.Text = "Captcha nemůže být prázdná.";
}
else
{
RecaptchaVerificationResult result = await recaptchaLogin.VerifyTaskAsync();
if (result == RecaptchaVerificationResult.Success)
{
Response.Redirect("~/admin/");
}
if (result == RecaptchaVerificationResult.IncorrectCaptchaSolution)
{
lblmsg.Text = "Nesprávný kód.";
}
else
{
lblmsg.Text = "Jiný problém s captcha.";
}
}
}
}