我尝试使用Devise设置reCaptcha,我想添加一个过滤器,在允许创建用户之前检查verify_recaptcha是否为true。如果它为假,则不应创建用户。
我试图跟随Devise的documentation了解如何做到这一点,但它似乎并不适用于我的情况。我也在生产模式下测试recaptcha,一般设置工作,我可以检查reCaptcha是真还是假。
这就是Devise告诉我在RegistrationsController中做的事情:
prepend_before_action :check_captcha, only: [:create] # Change this to be any actions you want to protect.
private
def check_captcha
unless verify_recaptcha
self.resource = resource_class.new sign_up_params
respond_with_navigational(resource) { render :new }
end
end
没有工作。我100%确定verify_recaptcha方法有效,并且设置没有问题。
我试过了:
class RegistrationsController < Devise::RegistrationsController
before_action :check_captcha
private
def check_captcha
if !verify_recaptcha == true
flash[:recaptcha_error] = "Fejl. Husk at sætte flueben i at du ikke er en robot"
signupuser_users_path
end
end
端
但没有运气。我该怎么做?设备通常在用户注册之前处理要运行的验证方法吗?
答案 0 :(得分:0)
最终通过更改设计方法的一小部分来使其工作:
AlertDialog
我猜设计背后的设备对我来说有点太高级了,不能用我自己的方法进行推广,但是稍微调整就可以解决问题了
答案 1 :(得分:0)
您可以使用javascript验证
<%= submit_tag "Sign Up", :onclick => "return validatecaptcha();" %>
<script type="text/javascript" language="javascript">
function validatecaptcha(){
var captcha_response = grecaptcha.getResponse();
if(captcha_response.length == 0)
{
// Captcha is not Passed
$("#notice").html('<div class="alert alert-danger">'+"Captcha mandatory"+'</div>');
return false;
}
else
{
// Captcha is Passed
return true;
}
}
</script>
答案 2 :(得分:0)
//inside your btn listener in Main7Activity.java
FragmentTow mstPeopleFragment (FragmentTow)fa.getItem(vp.getCurrentItem());
textTeam = mstPeopleFragment.getView().findViewById(R.id.tv_team);
textGroup = mstPeopleFragment.getView().findViewById(R.id.tv_group);
textTeam.setVisibility(View.GONE);
textGroup.setVisibility(View.GONE);