当前位置:  开发笔记 > 编程语言 > 正文

在条件前面添加条件?

如何解决《在条件前面添加条件?》经验,为你挑选了1个好方法。

我想问用户一个问题,并且只有在用户正确回答我的问题时才让他注册.我搜索了如何设法,但我的情况似乎并不存在.

有没有一种惯用的方法来处理这种情况?

第一个想法可能是使用javascript,但答案存储在LDAP中,我希望在rails中更容易处理.

我还在考虑禁用/users/sign_up路由,devise/registration#new手动调用action()并渲染视图(devise/registration/new).

我能想到的另一种方法是运行一个后台守护进程,它将收集会话ID,用户可以正确回答问题.在正确答案中,用户将被重定向到公共可用的注册页面,该页面将使用守护程序检查用户的会话ID.



1> coreyward..:

假设您已经签署了cookie数据(这是Rails 3中的默认值),您可以按照说法执行并使用会话:

# app/controllers/preauth_controller.rb
def new
end

def create
  if params[:answer] == 'correct answer'
    session[:preauthorized] = true
    redirect_to sign_up_path
  end
  flash[:error] = 'Incorrect answer'
  render :new
end


# app/controllers/users_controller.rb
before_filter :verify_preauth, only: [:new, :create]

def verify_preauth
  redirect_to new_preauth_path unless session[:preauthorized]
end

但是,如果cookie数据未签名,则preauthorized密钥可能被客户端篡改,因此不应被信任.

如果您的页面在传输过程中使用HTTPS通过TLS加密,并且您没有任何XSS漏洞,那么这应该足够安全以满足您的需求.如果您认为这是一段特别敏感的代码,那么您需要的不仅仅是StackOverflow用户的想法,而是指导和实施保护应用程序安全的综合方法.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有