不受欢迎
如果您有兴趣继续使用它,请提供此存储库。
Angularjs recaptcha
在您的AngularJS项目中添加recaptcha。
演示:http://vividcortex.github.io/angular-recaptcha/
安装
手动的
下载最新版本。
鲍尔
bower install --save angular-recaptcha
NPM
npm install --save angular-recaptcha
用法
有关快速使用示例,请参见演示文件。
IMPORTANT: Keep in mind that the captcha only works when used from a real domain
and with a valid re-captcha key, so this file won't work if you just load it in
your browser.
首先,您需要为您的域获得有效的recaptcha键。访问http://www.go*ogl**e.com/recaptcha。
包括VC-Recaptcha脚本,并使您的Angular应用取决于
vcRecaptcha模块。
< script type =" text/javascript " src =" angular-recaptcha.js " > </ script > var app = angular . module ( 'myApp' , [ 'vcRecaptcha' ] ) ;- 之后,您可以在视图中放置一个用于验证码小部件的容器,并在此上调用
vc-recaptcha指令:
< div
vc-recaptcha
key =" '---- YOUR PUBLIC KEY GOES HERE ----' "
> </ div >在这里, key属性传递给指令的范围,因此您可以使用范围中的属性或仅需硬编码字符串。请小心使用您的公钥,而不是私钥。
表单验证
默认情况下,如果使用formControl放置在表单中,则需要检查验证码以使表格有效。如果未检查验证码(如果没有选中用户检查框或支票已过期),则表格将被标记为无效。验证密钥是recaptcha 。您可以通过将required属性设置为false或将评估为false的范围的变量来选择退出此功能。任何其他值或省略属性都将选择进入此功能。
如果不需要验证码,您还可以以程序为程序触发验证,例如:
vcRecaptchaService . execute ( widgetId ) ;如果没有提供小部件ID,则将执行第一个创建的小部件。
响应验证
要从服务器验证此对象,您需要使用“验证”部分中描述的API。验证不在此工具的范围之内,因为必须在服务器端执行此操作。
您可以简单地为ng-model提供一个值,该值将分别在响应中分别进行动态填充和清除。当您想要响应的值时,可以从传递给ng-model范围的变量中获取它。它的工作方式就像将ng-model添加到形式的其他输入中一样。
...
< form name =" myForm " ng-submit =" mySubmit(myFields) " >
...
< div
vc-recaptcha
ng-model =" myFields.myRecaptchaResponse "
> </ div >
...
</ form >
... ...
$scope . mySubmit = function ( myFields ) {
console . log ( myFields . myRecaptchaResponse ) ;
}
. . .或者,您可以通过编程方式获得需要发送到服务器的响应,请使用vcRecaptchaService Angular服务的方法getResponse() 。此方法接收一个可选的参数widgetId ,可用于获取特定的recaptcha小部件的响应(如果您呈现多个窗口小部件)。如果没有提供小部件ID,则将返回第一个创建的小部件的响应。
var response = vcRecaptchaService . getResponse ( widgetId ) ; // returns the string response建议使用ng-model用于正常使用,因为该值直接通过指令将其绑定到Recaptcha实例,并且无需管理或传递witgetGetID 。
其他参数
您可以选择将验证码使用的theme作为HTML属性:
< div
vc-recaptcha
ng-model =" gRecaptchaResponse "
theme =" ---- light or dark ---- "
size =" ---- compact, normal or invisible ---- "
type =" '---- audio or image ----' "
key =" '---- YOUR PUBLIC KEY GOES HERE ----' "
lang =" ---- language code ---- "
> </ div >语言代码:https://developers.google.com/recaptcha/docs/language
在这种情况下,我们指定验证码应使用名为Light的主题。
听众
您可以将三个听众与指令, on-create , on-success和on-expire一起使用。
- on-create :在创建小部件之后,它就被称为。它会收到一个小部件ID,如果您的网站中有一个以上的recaptcha,这可能会有所帮助。
- 成功:一旦用户解决验证码,就被称为。它接收您需要验证响应所需的响应字符串。
- on-Expire :当验证码响应到期时,用户需要求解新的验证码。
< div
vc-recaptcha
key =" '---- YOUR PUBLIC KEY GOES HERE ----' "
ng-model =" gRecaptchaResponse "
on-create =" setWidgetId(widgetId) "
on-success =" setResponse(response) "
on-expire =" cbExpiration() "
lang =""
> </ div >例子
app . controller ( 'myController' , [ '$scope' , 'vcRecaptchaService' , function ( $scope , recaptcha ) {
$scope . setWidgetId = function ( widgetId ) {
// store the `widgetId` for future usage.
// For example for getting the response with
// `recaptcha.getResponse(widgetId)`.
} ;
$scope . setResponse = function ( response ) {
// send the `response` to your server for verification.
} ;
$scope . cbExpiration = function ( ) {
// reset the 'response' object that is on scope
} ;
} ] ) ; 固定令牌
如果您想使用安全令牌将其与网站密钥一起作为HTML属性将其通过。
< div
vc-recaptcha
key =" '---- YOUR PUBLIC KEY GOES HERE ----' "
stoken =" '--- YOUR GENERATED SECURE TOKEN ---' "
> </ div >请注意,您必须使用私钥的私钥加密您的代币!要了解有关安全令牌以及如何生成和加密它们的更多信息,请参考Recaptcha文档。
服务提供商
您可以使用vcRecaptchaServiceProvider在应用程序的配置函数中配置recaptcha服务。这是设置您的recaptcha站点密钥,主题,stoken,大小并输入一个位置而不是每个vc-recaptcha指令元素实例的方便方法。服务提供商中定义的默认值将被该实例的VC-Recaptcha指令元素传递给VC-Recaptcha指令元素的任何值。
myApp . config ( function ( vcRecaptchaServiceProvider ) {
vcRecaptchaServiceProvider . setSiteKey ( '---- YOUR PUBLIC KEY GOES HERE ----' )
vcRecaptchaServiceProvider . setTheme ( '---- light or dark ----' )
vcRecaptchaServiceProvider . setStoken ( '--- YOUR GENERATED SECURE TOKEN ---' )
vcRecaptchaServiceProvider . setSize ( '---- compact, normal or invisible ----' )
vcRecaptchaServiceProvider . setType ( '---- audio or image ----' )
vcRecaptchaServiceProvider . setLang ( '---- language code ----' )
} ) ;语言代码:https://developers.google.com/recaptcha/docs/language
您也可以一次设置所有值。
myApp . config ( function ( vcRecaptchaServiceProvider ) {
vcRecaptchaServiceProvider . setDefaults ( {
key : '---- YOUR PUBLIC KEY GOES HERE ----' ,
theme : '---- light or dark ----' ,
stoken : '--- YOUR GENERATED SECURE TOKEN ---' ,
size : '---- compact, normal or invisible ----' ,
type : '---- audio or image ----' ,
lang : '---- language code ----'
} ) ;
} ) ;注意:即使以前设置,省略的任何值也将是不确定的。
与旧的recaptcha有所不同
- 如果要强制一种语言,则需要将
hl参数添加到recaptcha api的脚本(?onload=onloadCallback&render=explicit&hl=es)。 - recaptcha不再使用参数Tabindex ,其用法没有效果。
- 不再支持对输入文本的访问。
- 挑战不再由recaptcha提供。响应文本与私钥和用户的IP地址一起使用以进行验证。
- 现在,recaptcha处理图像和音频之间的切换。
- 现在,帮助显示由recaptcha处理。
最近的变形金属
- 3.0.0-删除了包括Google Recaptcha API的需要。
- 2.2.3-创建验证码元素后删除清理。
- 2.0.1-使用ng -route和recaptcha时固定的ONLOAD将其放置在辅助视图中。
- 2.0.0-改写服务以支持新的recaptcha
- 1.0.2-在服务中添加了额外的
Recaptcha对象方法,即switch_type,showhelp,等。 - 1.0.0-
key属性现在是指令的范围属性 - 将
destroy()方法添加到服务中。感谢@Endorama。 - 我们添加了一种不同的集成方法(请参见Demo/2.HTML),该方法更安全,因为它不依赖于RECAPTCHA的重新加载事件的超时。感谢@sboisse报告问题并提出解决方案。
- 现在,该版本是使用gruntjs构建的,因此,如果您在项目中使用源文件(
src目录),则现在应该在Release目录中使用文件。
通过命令行克隆项目: