Как установить recaptcha ключевые настройки во времени выполнения

Я реализую управление recaptcha от Google.

Я создал простой c# тестовый проект из их примера и всех работ. Теперь, вместо того, чтобы иметь PublicKey и PrivateKey на aspx странице, я присвоил бы эти значения во время выполнения, поскольку их, скорее всего, вытянут или от web.config или от таблицы базы данных.

Я попробовал следующее в Page_Load

    protected void Page_Load(object sender, EventArgs e) {
        recaptcha.PublicKey = "";
        recaptcha.PrivateKey = "";
    }

но я добираюсь, ошибка при утверждении "reCAPTCHA должна быть настроена с общедоступным и закрытым ключом".

Я также пытался переопределить oninit метод страницы и присвоить значения там, но никакую радость.

Какие-либо идеи о том, куда это должно пойти?

8
задан NotMe 25 June 2010 в 15:37
поделиться

2 ответа

Попробуйте используя значение setincodebehind в вашем теге, например:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
  PublicKey="setincodebehind" PrivateKey="setincodebehind" ... />

Это должно позволить вам правильно установить ключи в выделенном коде. Есть еще пара способов сделать это. Например, вы можете получить значения из статического класса следующим образом:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
  PublicKey="<%= RecaptchaSettings.PublicKey %>" 
  PrivateKey="<%= RecaptchaSettings.PrivateKey %>" ... />

Где RecaptchaSettings - это предоставленный вами класс. Или вы можете поместить ключи в раздел appSettings вашего web.config и получить к ним доступ следующим образом:

<recaptcha:RecaptchaControl ID="myRecaptcha" runat="server" 
  PublicKey="<%$appSettings:RecaptchaPublicKey %>" 
  PrivateKey="<%$appSettings:RecaptchaPrivateKey %>" ... />

Надеюсь, это поможет.

16
ответ дан 5 December 2019 в 09:24
поделиться

Другой способ установить значения ключей, используйте ключи RecaptchaPublicKey и RecaptchaPrivateKey . Эти значения будут использоваться автоматически, если они не будут отменены во время объявления элемента управления ( ответ mjd79 , первый способ).

Pro : если у вас есть несколько деклараций, вам нужно хранить ключи только в одном месте, принцип СУХОЙ.

Такое поведение можно увидеть в исходном коде, RecaptchaControl.cs, строка 135 -... :

public RecaptchaControl()
{
    this.publicKey = ConfigurationManager.AppSettings["RecaptchaPublicKey"];
    this.privateKey = ConfigurationManager.AppSettings["RecaptchaPrivateKey"];
    ...
2
ответ дан 5 December 2019 в 09:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: