如何在rails中实现二级身份验证?

时间:2017-01-03 09:39:35

标签: ruby-on-rails authentication devise

我的devise已经设置了authentication application。现在我想在second level authentication中实施rails。我希望在hard code中编码email passwordcontrollers email。我想将此passwordemailpassword提供的userdatabase进行比较。而不是保存second level authentication并选择links。,因为这些5到6 person仅由company中的一个actions使用任何时间点。我想在我的控制器应用程序中为5到6 password实现这个。我怎么能实现这个?我查了一个宝石宝石' devise-authy'但它似乎向移动设备发送了otp gem身份验证。我不想要otp身份验证。我希望使用与设计电子邮件相同的电子邮件进行二级身份验证,但密码应该与设计原始密码不同。(例如在设计表中我想再增加一列second_level_password。)是否有任何manually为此需求类型或manually编码。如果它是{{1}}编码的那么我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以在rails控制器中使用before_action。

在控制器中添加以下代码行。

before_action :second_level_access

private

def second_level_access
  #You can use your logic to get password
  unless current_user.second_level_password == params[:second_level_password]
   # signout to user because user is already logged in with devise.
   redirect_to session_path
  end
end
  

修改

您可以使用

  

attr_accessor_with_default:second_level_logged_in,false

将以下行添加到application controller

before_action :logged_in_with_second_level, if: 'current_user and !second_level_logged_in'

def logged_in_with_second_level
  redirect_to 'second_level_logged_in_form_page'
end  
<{1}} create action

中的

添加代码second_level_logged_in