在ember js和mvc中使用captcha

时间:2014-03-25 21:04:42

标签: javascript asp.net-mvc model-view-controller ember.js captcha

我正在使用ember.jsasp.net mvc创建网站。在之前的asp.net网站中,我使用了captchaMVChttp://captchamvc.codeplex.com/)。但是,我无法弄清楚如何在Ember中使用它。谷歌搜索对我来说非常有帮助。

任何人都可以指出我如何使用captchaMVC和Ember一起使用正确的方向吗?

1 个答案:

答案 0 :(得分:4)

在reCaptcha中,挑战请求流(在用户代理和reCaptcha挑战资源服务器之间)和用户响应验证流程(通常在您的后端应用程序服务器和reCaptcha Verification API服务器之间)由{{3}处理为你抽象这个过程,让你只在前端和后端处理它的结果。

另一方面,Ember是一个客户端应用程序,不应该处理验证步骤,不要公开您的Private reCaptcha Key,以及其他参数。

由于这些事实,我发现手动构建reCaptcha支持更容易,而不是依赖于特定的插件。 a variety of plugins页面很好地描述了DIY过程。

我使用ember-cli,所以bower install recaptcha-ajax --save或在bower.json中配置它直接指向Google的recaptcha-ajax.js然后将其导入Brocfile。

在您的视图中,您可以定位特定元素,如下所示:

import Ember from 'ember';

export default Ember.View.extend({
    didInsertElement: function() {
        Recaptcha.create("your_public_key", 'element_id', {
            theme: "red"
            callback: Recaptcha.focus_response_field
        });
    }
});

在您的模板中,只需将上面的element_id元素从上面嵌入到表单元素中:

<form action="" method="post">
    <div id="element_id"></div>
</form>

并且不要忘记在.jshintrc文件中排除Recaptcha:

{
    "predef": {
        "Recaptcha": true
    }
}

现在,您的后端表单处理程序将收到recaptcha_challenge_fieldrecaptcha_response_field,它必须用于构建对Google's Displaying reCAPTCHA Without PluginsPOST请求,并且您将拥有根据{{​​3}}设置一些其他参数。