【问题标题】:Ruby on Rails, Devise: Force user to re-enter password for the specific pagesRuby on Rails,Devise:强制用户为特定页面重新输入密码
【发布时间】:2015-02-18 02:22:57
【问题描述】:

我正在使用 Rails 4 和 Devise 开发一个应用程序来进行用户身份验证。它旨在供客户在我们客户店面的计算机上使用,并且用户应始终使用每个商店的用户帐户登录。

但是,由于我们不希望客户看到某些页面,例如 /admin,因此我们决定用户必须首先重新输入密码(仅密码,而不是用户名和密码)访问特定页面的时间,即使他们已经登录。

如何强制用户重新输入特定页面的密码?

【问题讨论】:

  • ApplicationController 中定义一个重新认证方法,并使用before_filter 运行它以执行特定操作。如果最近修改了session[:reauthenticated_at],则什么也不做,否则将用户重定向到要求输入密码的重新身份验证控制器,使用 Devise (current_user.password_digest && current_user.authenticate(params[:password])) 进行验证并将session[:reauthenticated_at] 设置为Time.now
  • 感谢您的详细说明!!

标签: ruby-on-rails ruby-on-rails-4 devise


【解决方案1】:

{我正在做一个类似的应用程序,旨在支持小组活动。因此,领导者登录每台计算机,参与者只需选择他们的用户名。为了保护领导者配置页面,我做了以下操作

    before_action :re_authenticate,  only: [:admin_functions]
    private      
    def re_authenticate    
       authenticate_or_request_with_http_basic('Administration') { |username, password|
          username==current_user.username && current_user.valid_password?(password)
        }
   end

效果很好。用户必须重新进行身份验证才能访问管理页面,因此他们为课程登录的计算机在没有第二次登录的情况下无法访问。

【讨论】:

    猜你喜欢
    • 2012-09-23
    • 2011-07-28
    • 2013-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多